Thread B:lock();beginRemoveRows() -> signalremoveRows();endRemoveRows() -> signalunlock();ThreadAonBeginRemoveRows(){ int rowCount = model->rowCount(); /// упс, тут новый каунт, а вью ожидает старый, это же BEGIN removeRows, а они уже удалены.}
Thread B:beginRemoveRows() -> signalremoveRows();endRemoveRows() -> signalКак это видит Thread А:removeRows();beginRemoveRows()endRemoveRows()
Model:beginRemoveRows() -> signalremoveRows();endRemoveRows() -> signalКак это видит View:beginRemoveRows()endRemoveRows()update()
C++ (Qt)if( a == localA ){ int b; b++;}
C++ (Qt)if (a == localA) { data.push_back(0); // мы уверены что доступ к контейнеру data сейчас безопасен ...}