关于多线程操作
本人是多线程编程的新手,望赐教:
在一个类中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 对象;
}
[解决办法]