首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于多线程操作,该怎么处理

2012-03-29 
关于多线程操作本人是多线程编程的新手,望赐教:在一个类中pthread_create一个线程,其中会用到类中变量,同

关于多线程操作
本人是多线程编程的新手,望赐教:

在一个类中pthread_create一个线程,其中会用到类中变量,同时在其他线程会有delete对象的操作,结果就导致线程还没跑完,这个对象就被delete了,线程再用到类中变量,就挂掉。

请教各位大大,有哪些办法可以解决?

[解决办法]
工作线程跑完设置一个flag 同时在delete对象的线程中判断该flag再决定是否delete
[解决办法]
很多方法处理的,基本思想的就是等待你这个线程处理完了之后再删掉
可以采用事件内核对象来通知
[解决办法]
可重入方法或多线程套间组件设计,不要直接使用new/delete操作,建议使用引用计数的方法,通过某个特定接口来释放对象,由对象内部计数来决策何时释放资源
[解决办法]
你可以在用到这个变量的线程中加一个标示符 比如int flag=0;如果用完了变量之后,可以flag=1;然后
pthread_cond_signal(&m_cond);
 另一个线程可以判断 while(flag==0)
{
pthread_cond_wait(...);
}
[解决办法]
你可以在用到这个变量的线程中加一个标示符 比如int flag=0;如果用完了变量之后,可以flag=1;然后
pthread_cond_signal(&m_cond);
 另一个线程可以判断 while(flag==0)
{
pthread_cond_wait(...);
delete 对象;
}
[解决办法]

探讨
工作线程跑完设置一个flag 同时在delete对象的线程中判断该flag再决定是否delete

热点排行