锁定老帖子 主题:(ACE)线程专用存储
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-10
最后修改:2009-02-10
关于线程存储 无非就是两种存储方式:一种是 专用存储,另一种是 共享存储
在 专用存储 用 ACE 内 的 ACE_TSS模板类可以实现一次全局声明的 专用存储方式。例子
class DataType { public: DataType():data(0){} void increment(){ data++;} void set(int new_data){ data=new_data;} void decrement(){ data--;} int get(){return data;}
private: int data; };
ACE_TSS<DataType> data;
static void* thread1(void*) //加后等于 15 { data->set(10); ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get())); for(int i=0;i<5;i++) data->increment(); ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get())); return 0; }
static void * thread2(void*) //加后等于 105 { data->set(100); ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get())); for(int i=0; i<5;i++) data->increment(); ACE_DEBUG((LM_DEBUG,"(%t)The value of data is %d \n",data->get())); return 0; }
int main(int argc, char*argv[]) { //Spawn off the first thread ACE_Thread_Manager::instance()->spawn((ACE_THR_FUNC)thread1,0,THR_NEW_LWP| THR_DETACHED);
//Spawn off the second thread ACE_Thread_Manager::instance()->spawn((ACE_THR_FUNC)thread2,0,THR_NEW_LWP| THR_DETACHED); 52
//Wait for all threads in the manager to complete. ACE_Thread_Manager::instance()->wait(); ACE_DEBUG((LM_DEBUG,"Both threads done.Exiting.. \n")); }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 2344 次