我不太确定是否可以做我要问的事情,所以我想我会问。
我有一个多线程程序,其中线程共享一个内存块来传达必要的信息。其中一个信息是线程终止,其中线程不断检查此值,当值更改时,它们知道是时候执行pthread_exit()
. 其中一个线程包含listen()
函数,它似乎无限期地等待。如果没有人想要建立连接并且线程需要退出但它无法检查线程是否需要终止的值,因为它被卡住listen()
并且无法移动,这可能会出现问题。
while(1)
{
listen();
...
if(value == 1)
pthread_exit(NULL);
}
如果它有助于更好地说明我的观点,我的逻辑就是这样。我认为可以解决问题的是允许 listen() 等待一段时间,如果没有任何反应,它会继续执行下一条语句。不幸的是,两个参数都没有listen()
涉及时间限制。我什至不确定我是否正在使用多线程编程的正确方式,我一点经验都没有。那么这是一个好方法吗?也许有更好的方法来解决它?感谢任何有见地的评论。
编辑:只是澄清一点,原因listen()
是在while循环中,这是一个服务器,一次将连接到多个客户端。