В Qt можно:
connect(object, &Object::someSignal, objectInAnotherThread, &Object::someSlot);
Итак, когда я подключаю сигнал от объекта в потоке к объекту в другом потоке, Qt ставит в очередь сигнал, и someSlot будет выполняться в поток объекта InAnotherThread .
Эта особенность очень удобна и безопасна, хотя может копировать данные.
Лямбды в C ++ 11 удобны, но при замене этого типа соединения с помощью чистого лямбда-обратного вызова (без Qt ), лямбда будет исполнена в потоке вызывающей стороны . Это обычно требует мьютексов и c склонных к ошибкам логи c, чтобы все исправить.
Мне известно о Boost::signals2
et c, но AFAIK они не предоставляют этого же Поведение, подобное Qt, когда используется через границы потоков ..?
Если я хотел бы удалить Qt по той или иной причине, какие у меня есть варианты для замены в отношении моих соединений сигнальных слотов?