【发布时间】:2013-08-11 13:21:42
【问题描述】:
我是 linux 编程新手,对所有的同步工具并不完全熟悉,所以我想请教更多知识渊博的人,他们如何解决这个问题。
我有一个线程,我想通过一个循环运行。循环中的停止点将是对套接字的读取操作。我希望读取操作阻塞一段时间然后超时。但是,如果某些事件需要注意,我需要一种方法来解除读取线程的阻塞。 “事件”可以是多种不同事物中的任何一种,因此我需要某种方式来告诉线程是什么导致读取解除阻塞。
我知道您可以使用信号解除阻止的读取,但我不确定这是如何完成的。
【问题讨论】:
-
为什么不让一个线程只处理阻塞读取,而另一个线程做任何其他打断你的事情?看起来你想要一个线程架构并避免轮询,然后你问如何使用另一个范式多路复用其他工作。
-
这是一个 XY 问题:OP 的印象是,如果线程 Y 卡在阻塞读取上,则线程 X 无法写入套接字:)