一个简单的完成端口(服务端/客户端)类
2009-02-25 19:59:50 来源:WEB开发网核心提示: 这个问题的解决方法是添加一个数字到结构中,包含等待的I/O请求的数量(m_nNumberOfPendingIO),一个简单的完成端口(服务端/客户端)类(8),然后当我们知道没有等待的I/O请求时删除这个结构,这个功能通过函数EnterIoLoop(…) 和ReleaseCl
这个问题的解决方法是添加一个数字到结构中,包含等待的I/O请求的数量(m_nNumberOfPendingIO),然后当我们知道没有等待的I/O请求时删除这个结构。这个功能通过函数EnterIoLoop(…) 和ReleaseClientContext(…)来实现。
3.7 源码略读
源码的目标是提供一系列简单的类来处理所有IOCP编码中的问题。源码也提供了一系列通信和C/S软件中经常使用的函数,如文件接收/传送函数,逻辑线程池处理,等等。
上图功能性的图解说明了IOCP类源码。
我们有几个IO工作者线程通过完成端口来处理异步IO请求,这些工作者线程调用一些虚函数,这些虚函数可以把需要大量计算的请求放到一个工作队列中。逻辑工作者通过类中提供的这些函数从队列中取出任务、处理并发回结果。GUI经常与主类通信,通过Windows消息(因为MFC不是线程安全的)、通过调用函数或通过使用共享的变量。
图三
上图显示了类结构纵览。
图3中的类说明如下:
> CIOCPBuffer:管理异步请求的缓存的类。
> IOCPS:处理所有通信的主类。
> JobItem:保存逻辑工作者线程要处理的任务的结构。
> ClientContex:保存客户端特定信息的结构(如状态、数据,等等)。
3.7.1 缓冲设计 - CIOCPBuffer类
更多精彩
赞助商链接