入力引数とスレッド グループ内のスレッドからの戻り値の両方を処理する関数を作成しようとしています。
私の例のクラス:
// 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 を返したかどうかを確認できるようにしたいと考えています。
これを実装するにはどうすればよいですか?