写网络代码时,总希望把逻辑和网络层分开。而在IOCP这样的高并发连接时,Get中返回所带的Key性价比让人垂涎不止。可以把逻辑和网络当成一个对象通过KEY返回,也可以通过一个网络ID,来查找逻辑对象。来讨论下前者:
IOCP_KEY={NetObject, LogicObject}; //暂时结合在一起
当Accept时,申明出一个IOCP_KEY进行维护。Get获得IOCP_KEY时,下一步就是传给上层的逻辑处理。而做法上又不想把整个IOCP_KEY给上层,这样的话结构之间耦合太紧。对上层来说,必须的是一个收到的协议包内容,一个逻辑对象(看需求也可以加入一个网络对象进行直发).所以添加了一个bridge文件,专门取出有用的信息,独立在两者之间。具体的框架图如下:

明显的,逻辑对象被搁在了网络层的最低端,虽然可以通过Bridge进行拆分,但是整体的架构上隐患很多。
那么,如果把NetObject和LogicObject分开,逻辑对象.h自然的回到World的级别上来(图不给了,想象)。看了一些代码发现很多都是通过一个共同的ID来查找。即IOCP获得NetObject(IOCP_KEY)中的ID后,同时查找到LogicObject的ID,然后返回。采用HASH的方法效率虽然可以接受,但是还有更好的o(1)复杂度算法。(提示,链表+数组)
分享到:
相关推荐
1. 创建IOCP:通过调用CreateIoCompletionPort函数,指定一个初始的计数值和线程调度策略。 2. 关联Socket:每个新建的Socket都需要与IOCP关联,这样Socket的I/O操作完成后,系统会将完成信息放入IOCP。 3. 设置...
本文将详细解析"openssl 结合 IOCP的例子",这是一份使用OpenSSL库进行加密通信,并结合Windows操作系统的I/O完成端口(IOCP,Input/Output Completion Port)技术实现高性能网络服务的示例。 OpenSSL是一个开源...
1. **创建IOCP**:首先,需要调用`CreateIoCompletionPort`函数创建一个IOCP对象。这个对象用于存储和管理所有与之关联的I/O操作完成信息。 2. **关联设备或套接字**:接着,将需要进行I/O操作的设备(如硬盘)或套...
1. IOCP基础: IOCP是Windows系统提供的一个机制,它允许多个线程共享一个I/O端口,处理来自多个I/O操作的完成通知。这种模型提高了系统资源利用率,减少了上下文切换的开销,特别适合于处理大量并发连接的网络...
IOCP(Input/Output Completion Port,输入/输出完成端口)是Windows操作系统提供的一种高度优化的I/O模型,尤其适用于高并发的网络编程场景。它允许应用程序通过一个或多个线程处理大量的I/O请求,提高了系统资源的...
1. **创建IOCP**:首先,需要使用`CreateIoCompletionPort`函数创建一个IOCP对象。 2. **关联设备**:然后,将套接字或其他设备句柄与IOCP关联起来,这样设备的I/O操作就会将完成通知发送到这个IOCP。 3. **提交I/O...
1. **初始化IOCP**: 使用`CreateIoCompletionPort`函数创建IOCP,并指定一个线程池大小。这个大小应该根据预期的并发连接数和系统的硬件资源来设定。 2. **绑定UDP套接字**: 创建UDP套接字,并将其与IOCP关联,这样...
IOCP(I/O Completion Port,I/O 完成端口)是 Windows 操作系统提供的一种高效、可扩展的异步I/O模型,尤其适用于高并发的网络服务器开发。本文将详细探讨IOCP的工作原理、使用场景以及如何在服务器端实现。 ### ...
1. 创建IOCP:服务器启动时,首先需要创建一个IOCP,这是整个服务的核心。 2. 绑定套接字:将监听套接字与IOCP绑定,使得所有与该套接字相关的I/O操作都通过IOCP进行。 3. 接收连接:当有新的客户端连接请求时,...
在Windows操作系统中,I/O完成端口(I/O Completion Ports,简称IOCP)是一种高效的多线程I/O模型,尤其适用于处理大量的并发I/O请求。本篇文章将通过一个最简单的IOCP示例,深入探讨其工作原理和使用方法。 首先,...
IOCP.NET是一个针对C#.NET和VB.NET开发的高性能、高效率的异步I/O复用库,它基于Windows操作系统的完成端口(IO Completion Port,简称IOCP)机制。IOCP是Windows内核提供的一种优化的并发I/O处理方式,尤其适用于...
1. **创建I/O完成端口**:使用`CreateIoCompletionPort`函数创建,可以为一个文件句柄或网络套接字关联到IOCP,以便后续的I/O操作完成后,结果会被发送到这个端口。 2. **提交I/O请求**:通过调用`TransmitFile`、`...
1. 创建IOCP:使用CreateIoCompletionPort函数创建一个完成端口。 2. 关联设备:为需要进行I/O操作的设备或文件句柄创建一个I/O请求,并将其关联到IOCP。 3. 发起I/O:通过DeviceIoControl或其它相关API发起异步I/O...
IOCP(Input/Output Completion Port,输入/输出完成端口)是Windows操作系统提供的一种高效、高性能的异步I/O模型,特别适用于构建高并发的服务器应用程序。本文将深入探讨IOCP的基本原理、特点以及相关技术概念。 ...
1. **创建IOCP**: 使用`CreateIoCompletionPort`函数创建一个IOCP对象,这将作为所有后续异步I/O操作的通知中心。 2. **关联设备**: 使用IOCP之前,需要将设备句柄与IOCP关联,这样设备的I/O操作完成后会发送通知到...
1. **线程池**: IOCP的核心是线程池,它包含一组工作线程,用于处理完成的I/O请求。当一个I/O操作完成后,系统会将这个完成信息放入与IOCP关联的队列中。 2. **异步I/O**: 应用程序发起的I/O操作是异步的,即在调用...
1. **初始化完成端口**:通过`CreateIoCompletionPort`函数创建IOCP,分配必要的资源,如工作线程池,用于处理完成的I/O请求。 2. **绑定套接字到IOCP**:使用`CreateIoCompletionPort`函数将TCP或UDP套接字与IOCP...
1. **IOCP的工作原理** IOCP基于异步I/O模型,当发起一个I/O操作时,操作系统并不立即执行,而是立即返回,让调用者继续执行其他任务。当I/O操作完成后,操作系统会将结果放入一个完成队列中,由IOCP通知相应的线程...
1. **IOCP(Input/Output Completion Port)**: IOCP是Windows系统中的一个高级I/O机制,它允许多个线程在一个或多个I/O操作完成时接收通知。这种模式提高了处理大量并发请求的能力,因为系统会自动平衡工作在不同...