有两个线程T1,T2,都要调用fun()函数,函数内容为:
fun()
{
int len;
...
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,&iOldState);
pthread_testcancel();
len=read(...);
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,&iOldState);
...
}
比如T1进来调用pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,&iOldState)将T2设置为允许T2在执行到pthread_testcancel()时线程取消,然后T1执行read(),再执行pthread_setcancelstate(PTHREAD_CANCEL_DISABLE,&iOldState)将T2设置为禁止线程取消,然后T2才可以调用read()。这样理解不知对否?
那如果T1设置为线程取消的话T2执行到pthread_testcancel();应该是取消或退出状态,也就是没有T2这个线程了,那么此多线程程序设计不是就没有意义了吗?
还请各位大侠帮忙分析一下吧!谢谢了!
MMTTMM
相关分类