linux如何停止线程

linux如何停止线程,第1张

杀死线程 所在的进程就可以,

ps aux | grep 进程名

kill -TERM 进程号

如果你指的写程序, 那就参考 man pthread_exit

暂停线程必须想一个办法在能控制线程在能暂停的地方暂停,暂停点不能有任何数据已经上锁,上面说的那种while循环中也不能被暂停,还有一种就是当有大量内存被申请且还没有释放之前最好也不要被暂停。我建议大家用手动模式的信号量来实现。像这样申请一个信号量:hEvent=::CreateEvent(NULL,TURE,TURE,lpName)//第二个参数是TURE,设定为手动模式,防止::WaitForSingleObject改变信号量的状态。

执行完成后隐式退出

由线程本身显示调用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())


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8559413.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存