尝试使用boost :: thread:
void MyClass::Func(int a, int b, int c, int &r) {
r = a + b + c;
}
void MyClass::Func2(int a, int b, int c) {
memberVar = a + b + c;
}
void MyClass::Work()
{
int a = 1, b = 2, c = 3;
int r;
boost::thread_group tg;
for(int i = 0; i < 10; ++j)
{
boost::thread *th = new boost::thread(Func, a, b, c, r); //* error
tg.add_thread(th);
}
tg.join_all();
}
1)我在行// *上得到了这个错误,我找不到原因:
错误:在','标记
之前预期的primary-expression
2)参考参数(r)是从线程中获取值的好方法吗?或者我应该在Func2()中设置成员变量? (照顾谁写了什么)
3)一旦我将一个线程放在thread_group中,我怎样才能从中获取值?我不能再使用原始指针......
谢谢。
答案 0 :(得分:2)
#include <boost/thread/thread.hpp>
#include <boost/bind.hpp>
using namespace std;
class MyClass{
public:
void Func(int a, int b, int c, int &r) { r = a + b + c; }
void Work()
{
using namespace boost;
int a = 1, b = 2, c = 3;
int r=0;
thread_group tg;
for(int i = 0; i < 10; ++i){
thread *th = new thread(bind(&MyClass::Func,this,a, b, c, r));
tg.add_thread(th);
}
tg.join_all();
}
};
void main(){
MyClass a;
a.Work();
}