Я новичок в использовании boost и threadpools. Я хочу передать функцию в пул потоков, который принимает переменную в качестве параметра. В этом простом примере я просто передаю целое число. Насколько я понимаю, пост собирается вызвать доступную ветку в пуле потоков, чтобы что-то сделать. Код компилируется, если я настроил printProduct так, чтобы он не принимал какие-либо переменные, но это не то, что я в итоге пытаюсь сделать.
Ссылки на соответствующую документацию были бы очень полезны (я не нашел подробного обсуждения boost :: asio :: post), а также советов о том, как решить проблему. Спасибо!
#include <cstdlib>
#include <iostream>
#include <pthread.h>
#include <boost/version.hpp> // version is 1.72
#include <boost/asio.hpp>
#include <boost/asio/io_service.hpp>
#include <boost/bind.hpp>
#include <boost/thread/thread.hpp>
#include <boost/thread/thread_pool.hpp>
#include <boost/asio/thread_pool.hpp>
#include <boost/asio/post.hpp>
#include <boost/lockfree/queue.hpp>
using namespace std;
int printProduct(int endval){
// int endval = 1000000;
int prod = 1;
for (int i=0;i<endval;i++){
prod = prod * i;
}
return prod;
}
int main() {
boost::asio::thread_pool tp(8);
for (int i =0; i<200; i++){
// issue is how to pass the parameter into post
boost::asio::post(tp, printProduct,i);
// boost::asio::post(tp, printProduct(i));
}
}