`

IOCP的分层一

阅读更多

      写网络代码时,总希望把逻辑和网络层分开。而在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)复杂度算法。(提示,链表+数组)

分享到:
评论

相关推荐

    VC的IOCP开发,iocp类,demo

    1. 创建IOCP:通过调用CreateIoCompletionPort函数,指定一个初始的计数值和线程调度策略。 2. 关联Socket:每个新建的Socket都需要与IOCP关联,这样Socket的I/O操作完成后,系统会将完成信息放入IOCP。 3. 设置...

    openssl 结合 IOCP的例子

    本文将详细解析"openssl 结合 IOCP的例子",这是一份使用OpenSSL库进行加密通信,并结合Windows操作系统的I/O完成端口(IOCP,Input/Output Completion Port)技术实现高性能网络服务的示例。 OpenSSL是一个开源...

    IOCP原理windows下实现

    1. **创建IOCP**:首先,需要调用`CreateIoCompletionPort`函数创建一个IOCP对象。这个对象用于存储和管理所有与之关联的I/O操作完成信息。 2. **关联设备或套接字**:接着,将需要进行I/O操作的设备(如硬盘)或套...

    vc以IOCP完成端口方式实现网络数据传输 iocp服务器+客户端.zip

    1. IOCP基础: IOCP是Windows系统提供的一个机制,它允许多个线程共享一个I/O端口,处理来自多个I/O操作的完成通知。这种模型提高了系统资源利用率,减少了上下文切换的开销,特别适合于处理大量并发连接的网络...

    IOCP文件客户端 IOCP文件客户端

    IOCP(Input/Output Completion Port,输入/输出完成端口)是Windows操作系统提供的一种高度优化的I/O模型,尤其适用于高并发的网络编程场景。它允许应用程序通过一个或多个线程处理大量的I/O请求,提高了系统资源的...

    学习iocp的例子学习iocp的例子

    1. **创建IOCP**:首先,需要使用`CreateIoCompletionPort`函数创建一个IOCP对象。 2. **关联设备**:然后,将套接字或其他设备句柄与IOCP关联起来,这样设备的I/O操作就会将完成通知发送到这个IOCP。 3. **提交I/O...

    高效率IOCP的UDP通信服务端

    1. **初始化IOCP**: 使用`CreateIoCompletionPort`函数创建IOCP,并指定一个线程池大小。这个大小应该根据预期的并发连接数和系统的硬件资源来设定。 2. **绑定UDP套接字**: 创建UDP套接字,并将其与IOCP关联,这样...

    IOCP 服务器端 IOCP 服务器端

    IOCP(I/O Completion Port,I/O 完成端口)是 Windows 操作系统提供的一种高效、可扩展的异步I/O模型,尤其适用于高并发的网络服务器开发。本文将详细探讨IOCP的工作原理、使用场景以及如何在服务器端实现。 ### ...

    IOCP服务器模块.rar

    1. 创建IOCP:服务器启动时,首先需要创建一个IOCP,这是整个服务的核心。 2. 绑定套接字:将监听套接字与IOCP绑定,使得所有与该套接字相关的I/O操作都通过IOCP进行。 3. 接收连接:当有新的客户端连接请求时,...

    iocp开发一个最简单的例子

    在Windows操作系统中,I/O完成端口(I/O Completion Ports,简称IOCP)是一种高效的多线程I/O模型,尤其适用于处理大量的并发I/O请求。本篇文章将通过一个最简单的IOCP示例,深入探讨其工作原理和使用方法。 首先,...

    IOCP.NET(强大的IOCP托管库)

    IOCP.NET是一个针对C#.NET和VB.NET开发的高性能、高效率的异步I/O复用库,它基于Windows操作系统的完成端口(IO Completion Port,简称IOCP)机制。IOCP是Windows内核提供的一种优化的并发I/O处理方式,尤其适用于...

    iocp 一个实现不错的类

    1. **创建I/O完成端口**:使用`CreateIoCompletionPort`函数创建,可以为一个文件句柄或网络套接字关联到IOCP,以便后续的I/O操作完成后,结果会被发送到这个端口。 2. **提交I/O请求**:通过调用`TransmitFile`、`...

    完整的IOCP实例

    1. 创建IOCP:使用CreateIoCompletionPort函数创建一个完成端口。 2. 关联设备:为需要进行I/O操作的设备或文件句柄创建一个I/O请求,并将其关联到IOCP。 3. 发起I/O:通过DeviceIoControl或其它相关API发起异步I/O...

    IOCP完成端口原理

    IOCP(Input/Output Completion Port,输入/输出完成端口)是Windows操作系统提供的一种高效、高性能的异步I/O模型,特别适用于构建高并发的服务器应用程序。本文将深入探讨IOCP的基本原理、特点以及相关技术概念。 ...

    iocp 8_10iocp 8.10

    1. **创建IOCP**: 使用`CreateIoCompletionPort`函数创建一个IOCP对象,这将作为所有后续异步I/O操作的通知中心。 2. **关联设备**: 使用IOCP之前,需要将设备句柄与IOCP关联,这样设备的I/O操作完成后会发送通知到...

    iocp资料技术文档

    1. **线程池**: IOCP的核心是线程池,它包含一组工作线程,用于处理完成的I/O请求。当一个I/O操作完成后,系统会将这个完成信息放入与IOCP关联的队列中。 2. **异步I/O**: 应用程序发起的I/O操作是异步的,即在调用...

    c++版IOCP完成端口源码

    1. **初始化完成端口**:通过`CreateIoCompletionPort`函数创建IOCP,分配必要的资源,如工作线程池,用于处理完成的I/O请求。 2. **绑定套接字到IOCP**:使用`CreateIoCompletionPort`函数将TCP或UDP套接字与IOCP...

    mfc 网络编程iocp实例

    1. **IOCP的工作原理** IOCP基于异步I/O模型,当发起一个I/O操作时,操作系统并不立即执行,而是立即返回,让调用者继续执行其他任务。当I/O操作完成后,操作系统会将结果放入一个完成队列中,由IOCP通知相应的线程...

    windows iocp网络通讯库封装

    1. **IOCP(Input/Output Completion Port)**: IOCP是Windows系统中的一个高级I/O机制,它允许多个线程在一个或多个I/O操作完成时接收通知。这种模式提高了处理大量并发请求的能力,因为系统会自动平衡工作在不同...

Global site tag (gtag.js) - Google Analytics