Здравствуйте, гость ( Вход | Регистрация )
Алексей1153 | Дата 29.5.2018, 7:25 |
похоже, что QWaitCondition делает что-то подобное | |
Iron Bug | Дата 28.5.2018, 19:29 |
вообще, для того, что вы тут пытаетесь сделать, в плюсах есть condition variables. плюс вероятно, что будет введён barrier, который специально под такие случаи заточен. не знаю, есть ли какие-то обёртки в Qt, но можно просто взять обычные плюсовые средства синхронизации. |
|
Алексей1153 | Дата 28.5.2018, 8:24 |
MishaUA, нет, не правильный подход в корне ты считаешь, что можно включить блок в одном потоке и отключить его во втором. Это не так. Каждый поток вызывает собственную пару lock-unlock, а система обеспечивает, что эти два "блока" не пересекутся во время выполнения кода обоих потоков в твоём случае можно suspend второй поток. И в первом потоке запускать второй по некоему отсчёту времени и вот так наизнанку никогда не делай
Строго в порядке Цитата m.lock(); m.unlock(); Для этого есть специальный класс QMutexLocker. Пример:
|
|
MishaUA | Дата 27.5.2018, 15:05 |
Здравствуйте! Есть 2 потока. Первый Занимается обработкой данных, а второй дает команду на запуск, выглядит примерно вот так:
Правильный ли данный подход? Просто у меня почему-то в m.tryLock(5000) замирает и по истечению 5с не просыпается. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 19.4.2024, 6:14 |