当前位置: 技术问答>linux和unix
问一个关于pthread线程删除(取消)的问题
来源: 互联网 发布时间:2016-09-26
本文导语: 我想通过pthread_cancel或者pthread_join实现线程的删除,当我用pthread_cancel时,删除不成功,这是为什么呢? 下面是代码: if(pthread_detach(pid) { printf("pthread_detach error!!n"); return -1; ...
我想通过pthread_cancel或者pthread_join实现线程的删除,当我用pthread_cancel时,删除不成功,这是为什么呢?
下面是代码:
if(pthread_detach(pid) {
printf("pthread_detach error!!n");
return -1;
}
if(pthread_cancel(pid)) {
printf("pthread_cancel error!!n");
return-1;
}
可是调用pthread_cancel时出错,返回值不是0。这是为什么呢?我在pc机上试是可以的,在开发板上的STLinux系统就不行,如果要使用pthread_cancel强行删除线程时,在线程创建的时候要不要进行相关设置?
ps:pthread_setcancelstate()函数怎么用啊?它的参数没有pthread_t类型,因此不能对指定线程设置么?
下面是代码:
if(pthread_detach(pid) {
printf("pthread_detach error!!n");
return -1;
}
if(pthread_cancel(pid)) {
printf("pthread_cancel error!!n");
return-1;
}
可是调用pthread_cancel时出错,返回值不是0。这是为什么呢?我在pc机上试是可以的,在开发板上的STLinux系统就不行,如果要使用pthread_cancel强行删除线程时,在线程创建的时候要不要进行相关设置?
ps:pthread_setcancelstate()函数怎么用啊?它的参数没有pthread_t类型,因此不能对指定线程设置么?
|
pthread_setcancelstate只能设置线程自己的吧