我在我的应用程序中有一个线程,用于监视一组客户端套接字。我使用
现在问题是,当我将新客户端添加到客户端列表中时,我必须等待
所以我希望在超时之前让
我已经有了解决方案:创建一个虚拟的socketpair,始终将其包含在我的被监听套接字列表中,并向其中写入以使
编辑: 由于我使用的GLibc太旧(并且我无法更新它),因此我无法访问
你知道任何吗?
谢谢!
select()
来阻塞,直到客户端发出请求,以便我可以在不增加线程数的情况下高效地处理它。现在问题是,当我将新客户端添加到客户端列表中时,我必须等待
select()
的超时时间(设置为10秒),才能将新套接字添加到被监听的套接字列表中。所以我希望在超时之前让
select()
立即响应,以便可以立即监听客户端。我已经有了解决方案:创建一个虚拟的socketpair,始终将其包含在我的被监听套接字列表中,并向其中写入以使
select()
立即响应,但我希望有更好的解决方案。编辑: 由于我使用的GLibc太旧(并且我无法更新它),因此我无法访问
eventfd()
。所以我可能要使用fifo或socket。你知道任何吗?
谢谢!
pthread_kill
或类似的方法杀死线程,然后重新启动它。 - jswolf19