gpt4 book ai didi

c - "kill"如何成为Pthread?

转载 作者:行者123 更新时间:2023-12-03 11:50:44 24 4
gpt4 key购买 nike

我正在学习 Pthreads,并且想知道杀死这样一个对象的最佳方法是什么。在寻找类似问题后,我找不到“明确”的答案,但请随时向我指出任何相关问题。

我正在使用一个小型客户端服务器应用程序,其中服务器主线程正在监听客户端连接的套接字。每次客户端连接时,服务器都会创建一个新线程,在 while true 循环中执行“无限工作”。现在我想在同一个客户端在套接字上发送“停止”请求时停止此循环。

如果知道客户端是通过每个套接字消息中提供的 ID 来识别的,您将如何实现这种行为?使用共享变量(在主服务器线程和客户端服务器线程之间)作为 while 循环中的测试条件。使用 PThread 函数?

最佳答案

没有办法强行杀死单个 POSIX 线程;这是有意设计的。相反,如果您的线程需要被其他线程停止,您应该设计在其中运行的代码以考虑到这一点。执行此操作的惯用方法是使用退出标志变量(由互斥锁保护)和条件变量。

还有pthread_cancel,可用于请求线程退出。正确使用它需要使用 pthread_cleanup_push 设置清理处理程序和/或使用 pthread_setcancelstate 暂时禁用取消。

关于c - "kill"如何成为Pthread?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12029180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com