Здравствуйте, гость ( Вход | Регистрация )
|
AltA |
16.2.2015, 17:57
Сообщение
#1
|
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 16.2.2015 Пользователь №: 4339 Спасибо сказали: 0 раз(а) Репутация: 0
|
Приветствую.
Возникает проблема при работе приложения. Debug пишет: нагуглил: эта строка значит что я использую элемент qlist'а, в то врема, как qlist пуст. код выгледит примерно так Масивы ips и ports пополняются в функции этого класса, в ней же устанавливается ok1 = true; ключевое слово volatile при обьявлении ok и ok1 эфекта не даёт, и судя по всему в моём коде просто некоректно работает функция isEmpty() знаю что подход к потокам извращенский, пробывал QtConcurrent::run, QThreadPool, в слотах QThread писал проверку, результат - последующий сокет ждёт 30 сек чека предидущего, даже если они чекаются в разных потоках. так вроде работает в несколько потоков. ps не пинайте по лицу, самоучка, недавно подружился с qt спасибо |
|
|
|
![]() |
|
wiz29 |
16.2.2015, 20:05
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12
|
потому что вызов метода isEmpty и size тоже должны быть защищены мьютексом.
bool QList::isEmpty () const Returns true if the list contains no items; otherwise returns false. Можно и этим методом пользоваться. Проблемы не должно быть. Да, и рекомендую использовать автоматические объекты для захвата объектов синхронизации (QMutexLocker, QReadLocker/QWriteLocker). Сообщение отредактировал wiz29 - 16.2.2015, 20:00 |
|
|
|
AltA Ошибки в потоках 16.2.2015, 17:57
wiz29 Судя по куску кода: нет потокобезопасного обращени... 16.2.2015, 18:48
AltA Цитата(wiz29 @ 16.2.2015, 19:48) Судя по ... 16.2.2015, 19:34
AltA Цитата(wiz29 @ 16.2.2015, 21:05) потому ч... 16.2.2015, 21:15![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 24.12.2025, 20:11 |