为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > Windows和Linux下编写异步I O的模型探讨 df

Windows和Linux下编写异步I O的模型探讨 df

2018-07-10 2页 doc 12KB 11阅读

用户头像

is_842972

暂无简介

举报
Windows和Linux下编写异步I O的模型探讨 dfWindows和Linux下编写异步I O的模型探讨 df 需要首先说明的是异步I/O和多路复用同步I/O(如通过select函数在连接池中选择任一完成的端口)是有本质差异的,虽然两种方式都能提高效率。 异步I/O的思想是在一个端口支持异步读写,读写异步的系统调用需要OS支持,比如Read、Write有异步的实现版本,则用户调用其Read、Write异步版本,如果端口暂时不可用,会立即返回到用户代码。可以针对同一个端口准备多个异步读写操作,充分利用端口资源以及减少用户在等待端口可用过程中被挂起的时间。 一、Windows...
Windows和Linux下编写异步I O的模型探讨 df
Windows和Linux下编写异步I O的模型探讨 df 需要首先说明的是异步I/O和多路复用同步I/O(如通过select函数在连接池中选择任一完成的端口)是有本质差异的,虽然两种方式都能提高效率。 异步I/O的思想是在一个端口支持异步读写,读写异步的系统调用需要OS支持,比如Read、Write有异步的实现版本,则用户调用其Read、Write异步版本,如果端口暂时不可用,会立即返回到用户代码。可以针对同一个端口准备多个异步读写操作,充分利用端口资源以及减少用户在等待端口可用过程中被挂起的时间。 一、Windows下的异步I/O的模型 通过OVERLAPPED structure和WaitForMultipleObjects/WaitForMultipleEvents实现。 示例代码如下: HANDLE hfile = CreateFile(..., FILE_FLAG_OVERLAPPED, ...); BYTE bBuffer[10]; OVERLAPPED oRead = { 0 }; oRead.Offset = 0; oRead.hEvent = CreateEvent(...); ReadFile(hfile, bBuffer, 10, NULL, &oRead); OVERLAPPED oWrite = { 0 }; oWrite.Offset = 10; oWrite.hEvent = CreateEvent(...); WriteFile(hfile, "Jeff", 5, NULL, &oWrite); HANDLE h[2]; h[0] = oRead.hEvent; h[1] = oWrite.hEvent; DWORD dw = WaitForMultipleObjects(2, h, FALSE, INFINITE); switch (dw _ WAIT_OBJECT_0) { case 0: // Read completed break; case 1: // Write completed break; }
/
本文档为【Windows和Linux下编写异步I O的模型探讨 df】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索