【发布时间】:2012-06-05 21:19:25
【问题描述】:
我想创建一组线程,它们都有未来(这就是我使用 packaged_tasks 的原因),所以我可以使用它们返回的值。 但是下面的代码在编译过程中会返回错误:
boost::thread_group group;
for(int i=0; i<4; i++){
boost::packaged_task<int> task(std::bind(&matchThis,someStr, anotherStr));
boost::unique_future<int> fi=task.get_future();
//add task to task-group
group.create_thread(boost::move(task));
group.join_all();
}
这是错误:
c:\boost\boost\thread\detail\thread_group.hpp:42: 错误: “boost::packaged_task::packaged_task”:无法访问在 boost::packaged_task-class 中声明的私有成员 .和 [ R=整数] ...
当我创建这样的线程时,这段代码运行良好:
boost::thread thread(boost::move(task));
那么改用 thread_groups 有什么问题呢?
【问题讨论】:
标签: c++ multithreading boost