首页 > 代码库 > 取消线程,是否会释放线程的所有资源?
取消线程,是否会释放线程的所有资源?
#include <stdlib.h>#include <pthread.h>#include <stdio.h>#include <sched.h>//取消线程,是否会释放线程的所有资源?例子:void *thread1(void *arg){ printf("start thread (%u)\n", (unsigned)pthread_self());} int main(int argc, char *argv[]) { pthread_t t1, t2, t3; int ret; printf("main start\n"); do{ ret = pthread_create(&t1, NULL, thread1, NULL); if(ret != 0) { printf("create thread failed\n"); exit(1); } pthread_cancel(t1); printf("<<<<<<");//much too importent这行代码很重要 //pthread_join(t1, NULL);这句加上,将不断创建新线程. if(ret != 0) { printf("join failed\n"); exit(1); } }while(1); return 0; } //运行结果:/*start thread (349191056), 327start th<<<<<<<<<<<<<<<<<<<<<<<create thread failed注意:每次运行的结果都不一样,在主线程里面加了printf限制产生线程的速度,但是能生成的线程数都在350个左右,应该可以判断,取消并没完全释放资源。所以取消线程后,还应该用join来完全释放资源.*///注意:取消线程相当于使用pthread_exit终止线程。
取消线程,是否会释放线程的所有资源?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。