我需要一个客户端网络线程,以便能够对要传输的新消息以及网络上新数据的接收做出响应。我希望避免这个线程执行轮询循环,而只是根据需要进行处理。如何让Win32线程在工作队列和套接字上等待?
的情况如下:
客户端应用程序需要通过一个协议,该协议在很大程度上进行通信的服务器,但不是完全同步的。通常,客户端向服务器发送消息并阻塞,直到收到响应。
服务器可能异步处理客户端请求,在这种情况下,对客户端的响应不是结果,而是处理已开始的通知。在服务器完成处理客户端请求时,结果消息将在某个时间点发送给客户端。
异步结果通知可以随时到达客户端。这些通知在收到时需要处理,即只有当客户端再次发送时才能处理积压。
客户端网络线程接收并处理来自服务器的通知,并从客户端传输传出消息。
为了达到这个目的,我需要做一个线程唤醒来执行处理,无论是在接收到网络数据还是当一个要发送的消息被排入输入队列时。
线程如何唤醒来执行处理入队的工作项或来自套接字的数据?
我主要对使用普通的Win32 API感兴趣。
一个简单的例子或相关教程将非常欢迎!
+1;解决问题即使它不能很好地扩展(有时我会得到一个'IOCP是唯一的解决方案'的思路;而且通常实现解决方案要容易得多)。 – 2009-08-11 20:23:21