Windows 命名管道 + 异步I/O模型

一、管道 + 异步I/O 本地通讯模型
1、客户端操作
发送请求                                                          
    (1) 互斥上锁 CreateMutex, WaitForSingleObject                 
    (2) 打开命名管道 OpenNamedPipe                                
    (3) 等待管道是否可用 WaitNamedPipe                            
    (4) 创建管道写事件 CreateEvent                                
    (5) 往管道异步写数据 WriteFile                                
    (6) 创建管道读事件 CreateEvent                                
    (7) 从管道读取数据 ReadFile                                   
    (8) 关闭管道 CloseHandle(hPipe)                               
    (9) 互斥解锁 CloseHandle(hMutex) / ReleaseMutex(hMutex)      

2、服务段操作                                       
    (0) 创建命名管道 CreateNamedPipe            
    (1) 创建管道连接事件 CreateEvent             
    (2) 连接命名管道 ConnectNamedPipe 由管道连接事件判断是否有客户端连接到来            
    (3) 创建管道读事件 CreateEvent               
    (4) 从管道读取数据 ReadFile                  
    (5) 创建管道写事件 CreateEvent               
    (6) 往管道写数据 WriteFile                   
    (7) 刷新写缓冲数据 FlushFileBuffers          
    (8) 断开管道连接   DisconnectNamedPipe

二、附录
1、互斥加锁
打开互斥锁:OpenMutex(MUTEX_ALL_ACCESS, FALSE, name)
创建互斥锁:CreateMutex(NULL, TRUE, name);
互斥上锁  :WaitForSingleObject(mutex, INFINITE);
互斥解锁  :CloseHandle(hMutex)
释放互斥锁:ReleaseMutex

2、管道操作
创建命名管道    :CreateNamedPipe
等待管道是否可用: WaitNamedPipe
管道写操作      : WriteFile
管道读操作      : ReadFile
命名管道连接    :ConnectNamedPipe
命名管道断开连接:DisconnectNamedPipe
命名管道关闭    : CloseHandle

3、事件操作
创建事件:CreateEvent
等待事件:WaitForSingleObject
设置事件: SetEvent
重置事件:ResetEvent
关闭事件:CloseHandle

具体内容可以参考MSDN帮助手册.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值