Я хотел бы написать boost :: thread_group. Предполагая, что я правильно понял, что такое обратный вызов в потоке, я бы хотел применить его и в моей программе.
Я нашел следующий пример: ( thread_group без обратного вызова )
boost::thread_group group;
for (int i = 0; i < 15; ++i)
group.create_thread(aFunctionToExecute);
group.join_all();
Если я хотел бы изменить его на обратный вызов, он просто добавит &
до aFunctionToExecute
?
Я подумал об использовании обратного вызова для следующего случая: при условии, что у меня 2 ядра, и цикл for составляет от 0 до 99 (100 элементов). Вместо того, чтобы открыть 100 потоков, я хотел бы открыть только 2 потока (количество ядер в этом примере), и после того, как каждый поток завершит вычисления с правильной переменной, он отправит что-то, что он сделал, и будет ждать выполнения заказа. снова, пока все 100 элементов не будут вычислены.
Кто-нибудь знает пример или несколько примеров, которые я мог бы объединить, создавая это?
, поскольку у меня нет опыта работы с потоками, я хотел бы знать, является ли этот способ применения group_threads "правильным" способом?
Reagrds