【发布时间】:2009-08-05 18:38:58
【问题描述】:
我需要一个客户端网络线程来响应要传输的新消息,以及接收网络上的新数据。我希望避免该线程执行轮询循环,而是仅在需要时进行处理。
场景如下:
客户端应用程序需要通过大部分但不完全同步的协议与服务器通信。通常,客户端向服务器发送消息并阻塞,直到收到响应。
服务器可能异步处理客户端请求,在这种情况下响应客户端 不是结果,而是处理已开始的通知。当服务器完成对客户端请求的处理后,将在未来某个时间向客户端发送结果消息。
异步结果通知可以随时到达客户端。这些通知需要在收到时进行处理,即只有在客户端再次发送时才能处理积压。
客户端网络线程接收和处理来自服务器的通知,并传输来自客户端的传出消息。
为了实现这一点,我需要在接收到网络数据时或在要传输的消息被排入输入队列时唤醒线程以执行处理。
如何唤醒线程以处理已入队的工作项或来自套接字的数据?
我主要对使用普通的 Win32 API 感兴趣。
非常欢迎提供最小示例或相关教程!
【问题讨论】: