摘要:
由于socket recv()方法是堵塞式的,当多个客户端连接服务器时,其中一个socket的recv调用时,会产生堵塞,使其他连接不能继续。如果想改变这种一直等下去的焦急状态,可以多线程来实现(不再等待,同时去recv,同时阻塞,呵呵),每个socket连接使用一个线程,这样效率十分低下,根本不可能应对负荷较大的情况(是啊,占用各种资源,电脑啊,你耗不起)。这时候我们便可以采取select模型。select允许进程指示内核等待多个事件中的任何一个发生,并仅在有一个或多个时间发生或经历一段指定时间后才唤醒它。select告诉内核对哪些描述子感兴趣以及等待多长时间。这就是所谓的非阻塞模型,就是进 阅读全文
posted @ 2012-10-05 00:20
hailong
阅读(8020)
评论(0)
推荐(1)
摘要:
根据 博客园博主+石头+的原始代码,我修改为利用std::queue管理的消息队列:#include <iostream>#include <Windows.h>#include<queue>using namespace std;const int MAXMESSAGE = 1024;class CXMessageList{public: CXMessageList(); ~CXMessageList(){};public: MSG* GetTopMessage(); MSG* WaitForMessage(); int GetMessageCount() 阅读全文
posted @ 2012-10-05 00:05
hailong
阅读(380)
评论(0)
推荐(0)

浙公网安备 33010602011771号