【发布时间】:2011-06-24 00:44:08
【问题描述】:
这可能是不可能的,但我还是要问。我有一个多线程程序(服务器),它在专用于 IP 通信的线程上接收请求,然后将其传递给工作线程以完成工作,然后我必须将带有答案的回复发送回客户端并在何时发送它实际上已经完成,尽可能少的延迟。目前,我正在使用消费者/生产者模式并将回复放在队列中,以便 IP 线程起飞并发回给我的客户。然而,这并不能保证这将在何时发生,因为 IP 线程可能不会很快被安排,我不知道。这让我的客户,也就是阻止这个调用,认为请求失败了,这显然不是重点。
由于我无法在客户端进行更改,我需要在我这边解决这个发送问题,我面临的问题是我不想开始共享我的 IP 对象(目前只有在 1 个线程上)与工作线程,因为那样事情变得过于复杂。我想知道是否有某种方法可以使用线程同步机制来确保当我的工作线程完成时,IP 线程将执行我将回复发送回客户端?
手动/自动重置事件会为我执行此操作,还是不能保证立即唤醒线程?
【问题讨论】:
-
你没有提到你的平台。我想线程同步机制差异很大,因为它们不是由标准定义的。
-
操作系统:仅限 Windows
标签: c++ multithreading concurrency tcp