执行完成后隐式退出
由线程本身显示调用pthread_exit 函数退出;pthread_exit (void * retval)
被其他线程用pthread_cance函数终止:pthread_cance (pthread_t thread)
解决办法:
// 创建线程前设置 PTHREAD_CREATE_DETACHED 属性
pthread_attr_t attr
pthread_t thread
pthread_attr_init (&attr)
pthread_attr_setdetachstat(&attr, PTHREAD_CREATE_DETACHED)
pthread_create (&thread, &attr, &thread_function, NULL)
pthread_attr_destroy (&attr)
当线程为joinable时,使用pthread_join来获取线程返回值,并释放资源。
当线程为joinable时,也可在线程中调用 pthread_detach(pthread_self())
Linux线程的几种结束方式Linux创建线程使用
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine)(void *), void *arg)
1
2
Linux线程的几种结束方式:
调用pthread_exit(exit_code),exit_code为线程退出的状态代码。同一进程下的其他线程可以通过pthread_join(exit_code)来使用。
函数start_routine使用return返回,与调用pthread_exit()作用相同。
线程被取消pthread_cancel()。
同一进程中的其他线程调用了exit(),,或者主线程从main函数返回。
这个线程可以用ps命令查看到吗?如果可以的话,假如你的登陆的时候用户名是orange,线程名字是chrome,用$ ps -u orange|grep chrome|wc -l 就可以统计出有几个程序名含有 chrome 的程序在运行了。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)