увеличить thread_group с обратным вызовом

я хотел бы написать 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 «правильным» способом?

Соответствует


person Eagle    schedule 01.07.2011    source источник
comment
Проверьте boost::function и boost::bind для обратных вызовов, вы можете использовать это для функций потока, а также для любых дополнительных обратных вызовов, которые вы хотите вызвать.   -  person AJG85    schedule 01.07.2011