Сигнал и слот по сравнению с многопоточностью в библиотеке повышения

Это будет похоже на Схему. Только он скомпилирует как байт-код IL, так и Java, и сборку, чтобы я мог использовать все эти библиотеки.

5
задан Community 23 May 2017 в 10:27
поделиться

2 ответа

Q1:
The calls are serialized. What signals are doing internally is, greatly simplified:

foreach connection:
  call handler

Therefore you don't want to block in the handlers for long. If you need to do much work you can invoke it from there though, for example by creating a thread for it.

Q2:
boost signals 1 isn't even thread-safe; signals 2 is, but still does serialized calls. As signals are mostly used for event handling it is common style to not actually do much work in the handlers.
Thus there is no real benefit in calling them 'in parallel', the benefits would not in general justify the overhead of the neccessary thread invocations.

4
ответ дан 14 December 2019 в 08:55
поделиться

Q1: вы правы. Исправлен мой ответ на вопрос , на который вы ссылались, чтобы отразить это.

Q2: кажется, вас смущает то, что должно быть связано с потоками. В процессе передачи / захвата то, что содержит код , является слотом. Поэтому, если вы хотите запускать код одновременно, вам следует разместить слоты в разных потоках.

Такое поведение поддерживается Qt (на самом деле, не знаю о повышении) , и есть глава в руководстве по qt, в которой объясняется, что вам, скорее всего, понадобится «обработка в очереди» для такого поведения. Но тогда вам нужно будет иметь понятие «цикл событий» в потоке, который выполняет код слота (потому что вы не можете просто сказать рабочему потоку: «Эй, прекрати делать свои дела,

3
ответ дан 14 December 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: