我正在学习 Pthreads,并且想知道杀死这样一个对象的最佳方法是什么。在寻找类似的问题后,我无法找到“明确”的答案,但请随时向我指出任何相关问题。
我正在使用一个小型客户端服务器应用程序,其中服务器主线程正在侦听套接字上的客户端连接。每次客户端连接时,服务器都会创建一个新线程,在 while true 循环中执行“无限工作”。现在,当同一客户端在套接字上发送“停止”请求时,我想停止此循环。
知道客户端是通过每个套接字消息中提供的 ID 来识别的,您将如何实现这样的行为?使用共享变量(在主服务器线程和客户端服务器线程之间)作为 while 循环中的 tes 条件。使用 PThread 函数?
没有办法强行杀死单个 POSIX 线程;这是有意设计的。相反,如果您的线程需要被其他线程停止,您应该设计在其中运行的代码以考虑到这一点。执行此操作的惯用方法是使用退出标志变量(由互斥体保护)和条件变量。
还有pthread_cancel
,可用于请求线程退出。正确使用它需要设置清理处理程序pthread_cleanup_push
和/或暂时禁用取消pthread_setcancelstate
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)