我正在尝试编写一个函数来处理线程组中线程的输入参数和返回值。
我的示例类:
// includes...
class MyClass(int id)
{
thread_id = id;
i = id* 5;
b = false;
}
void resetCounter(int j){
i = j * 5;
}
int getId(){
return id;
}
bool getBool(){
return b;
}
void DoWork(){
while( i > 0 ){
boost::this_thread::sleep(boost::posix_time::seconds(i));
i--;
}
b = true; // DoWork will in the real code be able to return false!
}
private:
bool b;
int i;
int thread_id
};
boost::threadgroup threads;
示例代码:
bool exist = false;
for(int i=0;i<4;i++){
// first check if thread id exist (possible)?
// If so don´t create a new thread but reset the counter!
if(exist){
// in current thread call reset "i" (w.resetCounter(i))
}else{
MyClass m(i);
boost::function<void()> thread_func = boost::bind(&MyClass::DoWork, &m);
threads.create_thread(thread_func);
}
}
我想遍历线程并能够检查 DoWork 是否返回 true。
我该如何实施?