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