QMutex. Принудительная блокировка для ожидания команды |
Здравствуйте, гость ( Вход | Регистрация )
QMutex. Принудительная блокировка для ожидания команды |
MishaUA |
27.5.2018, 15:05
Сообщение
#1
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
Здравствуйте!
Есть 2 потока. Первый Занимается обработкой данных, а второй дает команду на запуск, выглядит примерно вот так:
Правильный ли данный подход? Просто у меня почему-то в m.tryLock(5000) замирает и по истечению 5с не просыпается. |
|
|
Алексей1153 |
28.5.2018, 8:24
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
MishaUA, нет, не правильный подход в корне
ты считаешь, что можно включить блок в одном потоке и отключить его во втором. Это не так. Каждый поток вызывает собственную пару lock-unlock, а система обеспечивает, что эти два "блока" не пересекутся во время выполнения кода обоих потоков в твоём случае можно suspend второй поток. И в первом потоке запускать второй по некоему отсчёту времени и вот так наизнанку никогда не делай
Строго в порядке Цитата m.lock(); m.unlock(); Для этого есть специальный класс QMutexLocker. Пример:
|
|
|
Текстовая версия | Сейчас: 23.11.2024, 0:51 |