Довольно новый для потоковой передачи, и у меня есть этот QList, что потоки разделяют между ними. У всех у них есть собственное пространство, над которым они могут работать, и графический интерфейс (модель/представление) постоянно просматривают этот список. Затем я получаю этот крах, который указывает на QDataList.size(). Отладка на самом деле не помогает мне, так как я никогда не сталкивался с этой проблемой, если я перехожу к коду, и когда я пытаюсь скомпрометировать qList, нет никакой информации.Могут ли два потока читать из одного и того же QList одновременно?
Итак, мой вопрос: возможно ли получить размер Qlists и читать объекты одновременно? Объекты в списке являются потокобезопасными и не могут быть прочитаны/записаны разными потоками одновременно.
Получение «0xC0000005: место для обнаружения нарушения доступа 0xfeeefefa». который указывает мне: размер рядный Int() сопзЬ в qlist.h
Я иду через стек вызовов и нашел это:
QtCored4.dll!QListData::size() Line 98 + 0x11 bytes C++
QtNetworkd4.dll!QList<enum QNetworkReplyImplPrivate::InternalNotifications>::size() Line 137 + 0x10 bytes C++
QtNetworkd4.dll!QNetworkReplyImplPrivate::resumeNotificationHandling() Line 444 + 0xe bytes C++
QtNetworkd4.dll!QNetworkReplyImplPrivate::finished() Line 797 C++
QtNetworkd4.dll!QNetworkAccessBackend::finished() Line 313 C++
QtNetworkd4.dll!QNetworkAccessHttpBackend::replyFinished() Line 739 C++
QtNetworkd4.dll!QNetworkAccessHttpBackend::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 86 + 0x8 bytes C++
QtCored4.dll!QMetaCallEvent::placeMetaCall(QObject * object) Line 525 + 0x1d bytes C++
QtCored4.dll!QObject::event(QEvent * e) Line 1195 + 0x14 bytes C++
QtGuid4.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 4550 + 0x11 bytes C++
QtGuid4.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3932 + 0x10 bytes C++
QtCored4.dll!QCoreApplication::notifyInternal(QObject * receiver, QEvent * event) Line 876 + 0x15 bytes C++
QtCored4.dll!QCoreApplication::sendEvent(QObject * receiver, QEvent * event) Line 231 + 0x39 bytes C++
QtCored4.dll!QCoreApplicationPrivate::sendPostedEvents(QObject * receiver, int event_type, QThreadData * data) Line 1500 + 0xd bytes C++
QtCored4.dll!qt_internal_proc(HWND__ * hwnd, unsigned int message, unsigned int wp, long lp) Line 496 + 0x10 bytes C++
Каждый поток, имеющий менеджер сети, который делает networkRequest:
QThread ASSERT failure in QMutexLocker: "QMutex pointer is misaligned",
Любая функция члена QList, которая не является 'const', может потенциально изменить ее состояние. –
Вы пробовали синхронизацию с помощью блокировки? http://doc.trolltech.com/4.7/qreadwritelock.html – jdi
различные потоки будут изменять объекты в списке, не добавляя или не удаляя из него объекты – chikuba