我是使用 boost 和线程池的新手。我想将一个函数传递给一个将变量作为参数的线程池。在这个简单的例子中,我只是传入一个整数。我的理解是 post 将调用线程池中的可用线程来执行某些操作。如果我将 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 …Run Code Online (Sandbox Code Playgroud)