Я прошел через подобные вопросы на Stackoverflow, но до сих пор не может получить хороший ответ:сигнал и слот против многопоточности в библиотеке Boost,
Я довольно озадачен тем, как достигается этот сигнал/слот.
Q1: Из следующего кода сиг подключен к двум функциям (Hello() и World()), и кажется, что функции вызываются сериализованным образом, что также подразумевает, что одна функция (Hello ()) необходимо завершить до перехода в другую функцию (World())? => Программа с одной нитью
Q2: В любом случае, чтобы включить многопоточный сигнал/слот? (=> World() начнется мгновенно, не нужно ждать завершения Hello().) Или, если это не рекомендуется, не могли бы вы рассказать мне, почему?
Sample codes on Boost website:
struct Hello
{
void operator()() const { std::cout << "Hello";}
};
struct World
{
void operator()() const { std::cout << ", World!" << std::endl;}
};
boost::signal<void()> sig;
sig.connect(Hello());
sig.connect(World());
sig();
Выход: Hello, World!