Не напрямую, поскольку boost не обеспечивает цикл обработки событий.
Чтобы обработать сигнал в другом потоке, другой поток должен проверять очередь обработчиков, которые он должен запустить и выполнить (которые обычноозначает какой-то цикл обработки событий).Boost не обеспечивает его, поэтому вам нужно получить его из другого места или написать его.
Если у вас есть цикл обработки событий, который не дает сигналов (или реализуете какое-то простое решение с очередями), выдолжен иметь возможность (ab) использовать boost.signals2 (не boost.signals, потому что эта версия не является поточно-ориентированной), переопределив operator+=
, чтобы обернуть каждый обработчик во что-то, что поставит его в очередь для выполнения в другом потоке.Возможно, вы даже сможете реализовать его для сигналов с возвращаемыми значениями (что не поддерживается Qt, но поддерживается boost), но вам следует быть осторожным, чтобы избежать тупиковой блокировки.