我正在使用一個封裝了thread_group的類,並對它有一些疑問封裝的boost thread_group。有關ID和同步的問題
class MyGroup{
private:
boost::this_thread::id _id;
boost::thread::thread_group group;
int abc;
//other attributes
public:
void foo();
};
在類構造函數中,我啓動N個線程
for (size_t i=0;i<N;i++){
group.add(new boost::thread(boost::bind(&foo,this)));
}
void foo(){
_id = boost::this_thread::get_id();
//more code.
abc++ //needs to be sync?
}
所以,這是我的問題。
類屬性是否需要同步?
每個線程都有不同的ID嗎?例如,如果我有
void bar(){
this->id_;
}
這將導致每個線程的不同ID,或者每個人都相同?
提前致謝!
如果bar()是從foo()以外的函數中調用的(即,在單個線程中運行的函數),它仍然會打印不同的值,或者它會打印調用bar()的線程的id? – Tom 2009-09-25 01:50:00
如果該函數是從鏈中的foo()調用的任何函數調用的,它將從不同的線程有效執行,並且具有不同的_ids。 – 2009-09-25 06:43:17