Я новичок в C++ и Qt, и мне интересно, что произойдет, если я отправлю signal
в object1
, работающем в thread1
, другому object2
, работающему в другом thread2
, а object2
запустит бесконечный цикл для обработки? Будет ли slot
в object2
никогда не вызываться, так как thread2
занят выполнением цикла?
Поведение слотов QThread
Ответы (1)
Я новичок в C++ и Qt, и мне интересно, что произойдет, если я испущу сигнал в объекте 1, работающем в потоке 1, на другой объект 2, работающий в другом потоке 2, а объект 2 выполняет бесконечный цикл для обработки? Будет ли слот в object2 никогда не вызываться, так как thread2 занят выполнением цикла?
И да и нет.
Если вы не обрабатываете события, то поток не сможет обработать события, сигналы и слоты так, как вы ожидаете.
Однако вы можете создать цикл событий, который время от времени обрабатывает поступающие события, и тогда он будет работать так, как вы ожидаете.
Мое более подробное объяснение доступно здесь для людей, которые хотели бы получить более подробную информацию по теме.
person
lpapp
schedule
29.12.2013
Просто отметим, что обработка событий вручную работает не так хорошо и не так эффективно, как просто не мешать циклу обработки событий.
- person John Chadwick; 30.12.2013
@JohnChadwick: я не уверен, что вы имеете в виду.
- person lpapp; 30.12.2013