Название: Сигнал и слоты - очередь событий при QueuedConnection Отправлено: sergek от Июнь 21, 2017, 08:36 Коллеги,
всегда думал, что при QueuedConnection выполнение слотов осуществляется в порядке вызовов сигналов, например, при Код: emit connectToController(); // соединиться с контроллером Существует ли соглашение о порядке организации очереди событий при соединении сигналов и слотов? Какие условия регулируют этот процесс? Название: Re: Сигнал и слоты - очередь событий при QueuedConnection Отправлено: __Heaven__ от Июнь 21, 2017, 09:19 Слоты в одном потоке выполняются?
Название: Re: Сигнал и слоты - очередь событий при QueuedConnection Отправлено: sergek от Июнь 21, 2017, 09:52 Есть оба случая - и в одном потоке, и в разных. Результат одинаковый.
UPD: Стоп. Наверное, я неправильно понял - слоты выполняются в одном потоке. А сигналы могут испускаться из того же потока, что и слоты, и из другого. Название: Re: Сигнал и слоты - очередь событий при QueuedConnection Отправлено: Igors от Июнь 21, 2017, 12:06 А сигналы могут испускаться из того же потока, что и слоты, и из другого. Здесь коварная ловушкаКод: emit connectToController(); // соединиться с контроллером Существует ли соглашение о порядке организации очереди событий при соединении сигналов и слотов? Какие условия регулируют этот процесс? Нет, обычная очередь FIFOНазвание: Re: Сигнал и слоты - очередь событий при QueuedConnection Отправлено: sergek от Июнь 21, 2017, 12:38 Действительно requestSig всегда выполнится ПОСЛЕ connectToController . Однако при наличии других ниток нет гарантий что requestSig будет выполнен СЛЕДУЮЩИМ ПОСЛЕ connectToController - другие сигналы могут вклиниться между ними Это не важно. Пусть не следующим за connectToController, но при fifo должен выполняться не раньше его! А у меня иногда (10-20% случаев) сначала вызывается слот запроса, а потом - слот подключения. И облом :(Название: Re: Сигнал и слоты - очередь событий при QueuedConnection Отправлено: Igors от Июнь 21, 2017, 13:08 Пусть не следующим за connectToController, но при fifo должен выполняться не раньше его! А у меня иногда (10-20% случаев) сначала вызывается слот запроса, а потом - слот подключения. И облом :( Что-то не так меряете (разумеется считаем что оба сигнала испущены из одной нитки). Добавьте ID (если их еше нет) и попечатайте - не должно так бытьЭто не важно. Почти год с этим жил - нагородил логов по самые не балуйся. Летит через неск суток работы у неск юзеров. Следов нет. Ну да ладно, не важно - так не важно :)Название: Re: Сигнал и слоты - очередь событий при QueuedConnection Отправлено: sergek от Июнь 21, 2017, 13:55 Что-то не так меряете (разумеется считаем что оба сигнала испущены из одной нитки). Добавьте ID (если их еше нет) и попечатайте - не должно так быть Попробую на макете, самого гложут сомнения. |