Название: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: Alex_C от Июль 18, 2012, 14:09 Мне нужно затормозить поток пока мютекс не раздлочится или пока таймаут не пройдет.
Для этого нужно QWaitCondition::wait использовать? Чего то он у меня все время по таймауту срабатывает. И чтоб не плодить другие темы: - слот в QThred при вызове работает в основном потоке или в потоке треда? - есть 2 QLineEdit, которые взаимно по сигналу textChanged() реагируют на изменения. Как избежать зацикливания? Где-то я это встречал, а сейчас не найду. Название: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: CJ1 от Июль 18, 2012, 14:12 QCoreApplication::processEvents()
Не подойдет? Название: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: mutineer от Июль 18, 2012, 14:16 - слот в QThred при вызове работает в основном потоке или в потоке треда? Зависит от того, в каком потоке живет сам объект QThread, как вызывают слот, и если через сигнал, то какой тип соединенияНазвание: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: Bepec от Июль 18, 2012, 14:20 Тормозит поток и обычный мьютекс.
А QWaitCondition ждёт, пока не будет снят мутекс. Сигнал слотовое соединение зависит от объектов и типа соединения. Зацикливания можно избежать стражами - булевскими флагами аля "я сейчас изменяюсь, ты не рыпайся пока" :) Название: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: Alex_C от Июль 18, 2012, 14:49 Тогда более подробно о ситуации:
есть устройства, работающие по ком-порту. Необходимо с них считывать информацию, не тормозя основной поток. Создал наследника от QThread. В нем объект QtSerialPort. Код
Слот slot_readDataFromPort() в каком треде будет выполняться? На счет мютекса: посылаю комманду в ком-порт и ожидаю прихода данных от устройства Код
слот в треде, который получает данные Код
Название: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: mutineer от Июль 18, 2012, 14:53 Тогда более подробно о ситуации: есть устройства, работающие по ком-порту. Необходимо с них считывать информацию, не тормозя основной поток. Создал наследника от QThread. В нем объект QtSerialPort. Код
Слот slot_readDataFromPort() в каком треде будет выполняться? В том же, в котором живет this Название: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: Akon от Июль 18, 2012, 15:02 Цитировать - есть 2 QLineEdit, которые взаимно по сигналу textChanged() реагируют на изменения. Как избежать зацикливания? Где-то я это встречал, а сейчас не найду. Код: void Foo::setValue(int value) Название: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: Igors от Июль 18, 2012, 15:42 И чтоб не плодить другие темы: Плодить конечно не надо, но все-таки вопросы хоть как-то должны быть связаны между собой. А так хз на какой отвечать :)Код
Код
Название: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: Alex_C от Июль 20, 2012, 13:57 Тут дело не в букваре, а в вопросе в заголовке темы :)
Разобрался - QWaitCondition нужен совсем для другого, чем я его пытался использовать. Ответ на заголовок темы: WaitForSingleObject и QWaitCondition::wait - это не одно и тоже. Название: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: Igors от Июль 20, 2012, 14:24 Тут дело не в букваре, а в вопросе в заголовке темы :) Понял, в след раз буду отвечать только "да" или "нет" :)Разобрался - QWaitCondition нужен совсем для другого, чем я его пытался использовать. Ответ на заголовок темы: WaitForSingleObject и QWaitCondition::wait - это не одно и тоже. Название: Re: WaitForSingleObject и QWaitCondition::wait - это одно и тоже? Отправлено: Alex_C от Июль 21, 2012, 11:46 Ну собственно в большинстве случаев так и надо отвечать :)
Если человек умный - должен сам разобраться. Нужно только дать верное направление - а дальше сам, только сам :) |