多线程命名管道通信的设计:

命名管道是进程间通信的一种方式,管道分为2种:匿名管道(Anonymous Pipe)和命名管道(Named Pipe)。
这里主要介绍多线程命名管道。

服务端设计如下图:

客户端设计如下图:

服务端采用阻塞模式等待客户端的连接,客户端采用多个线程对管道进行数据读写。
因客户端采用多个线程对管道进行读写,故一个线程读取的数据可能并不是此线程写入数据后,服务端读取此线程刚写入的数据后再写入的数据。也就是客户端多个线程写入与读取的数据可能会串,此理论已经过测试,为解决此问题,可以在客户端写入数据时加标识,服务端读取数据后,再写入的数据带上此标识,客户端读取时可根据此标识来判断是否是写入数据后服务端返回的消息。

以上设计可支持多个客户端多个线程同时对管道进行读写。
此文并没有对命名管道概念进行过多的解释,需要对概念进行了解的,可查看帮助文档。
此文只进行设计,下篇将进行多线程命名管道通信的实现,敬请期待。

下篇地址:多线程命名管道通信的实现

作者:xinhaijulan
出处:http://xinhaijulan.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/xinhaijulan/archive/2010/07/28/1786535.html

多线程命名管道通信的设计相关推荐

  1. 多线程命名管道通信的实现

    转载自: http://www.cnblogs.com/xinhaijulan/archive/2010/07/31/1789147.html 上篇介绍了[多线程命名管道通信的设计 ],本篇进行多线程 ...

  2. c语言管道通信实例,C语言辅导:VC命名管道通信的实现

    无论是SQL Server的用户,还是PB的用户,作为C/S结构开发环境,他们在网络通信的实现上,都有一种共同的方法--命名管道.由于当前操作系统的不惟一性,各个系统都有其独自的通信协议,导致了不同系 ...

  3. Windows/Linux平台下命名管道通信调用参考

    在一些需要传递少量数据的进程通信业务中,采用命名管道通信是一种不错的选择,但是管道通信本身是不跨平台的.如果我们想在不同的平台下使用管道通信就会很麻烦.这里我简单的总结了一下命名管道在windows平 ...

  4. c语言程序实现进程的管道通信,C 进程间通信--命名管道通信代码实现及其原理图示...

    在将这个题目之前大家需要了解几个概念: 进程: 我们可以先看进程的定义:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础: ...

  5. VC命名管道通信的实现

    无论是sql server的用户,还是pb的用户,作为c/s结构开发环境,他们在网络通信的实现上,都有一种共同的方法--命名管道.由于当前操作系统的不惟一性,各个系统都有其独自的通信协议,导致了不同系 ...

  6. linux 命名管道通信速度,《Linux 进程间通信》命名管道:FIFO

    命名管道的主要用途:不相关的进程之间交换数据. 命令行上创建命名管道: $ mkfifo filename 程序中创建命名管道: #include #include int mkfifo(const ...

  7. 两端同时写命名管道的测试程序

    转载请标明是引用于 http://blog.csdn.net/chenyujing1234 欢迎大家拍砖 一. 结论:(1)两端可以同时写管道,是可行的.可见管道是双工的. (2)往管道里写数据,最多 ...

  8. 操作系统实验四——使用命名管道实现进程通信

    操作系统实验四--使用命名管道实现进程通信 一. 实验目的 (1)了解windows系统环境下的进程通讯机制. (2)熟悉Windows系统提供的进程通信API. 二. 实验准备 相关API函数介绍 ...

  9. 【Linux】进程间通信 - 匿名/命名管道与System V共享内存

    目录 前言 一.管道 0.什么是管道 1).管道的概念 2).管道的本质 3).管道指令: "|" 1.匿名管道 1).如何创建匿名管道 2).如何使用匿名管道进行通信 3).匿名 ...

  10. 【Linux】进程间通信 —— 匿名管道 | 命名管道 | System V | 消息队列 | 共享内存

    进程间通信 0. 进程间通信 1. 管道 1.1 匿名管道 1.1.1 匿名管道原理 1.1.2 创建匿名管道pipe 1.1.3 基于匿名管道通信的4种情况5个特点 1.2 命名管道 1.2.1 创 ...

最新文章

  1. moss 2007 单点登录的配置
  2. C#规范整理·资源管理和序列化
  3. 如何在文件夹中创建nodeJs项目
  4. raspberry pi_如何保持您的Raspberry Pi更新
  5. STM32工作笔记0012---认识老化试验
  6. rsync使用(二)
  7. 你家的猫也能来段东北话了:快手快影一键「智能配音」,三种方言随意换,还能配出《舌尖》风...
  8. JAVA——【案例】实现计算机系信息管理系统(教师和学生信息管理)
  9. python怎么安装requests包_python怎么安装requests库
  10. ST-LINK烧录stm32程序步骤
  11. Rust高并发编程总结
  12. cydia软件路径_Cydia源目录结构解析
  13. STM32学习笔记——USB鼠标
  14. 幻立方解法之素数3阶幻立方
  15. NB-IOT开发|nbiot开发教程《三》AT指令类模组驱动-STM32实现AT指令状态机
  16. [HNOI2005]狡猾的商人 差分约束+判环
  17. Unity 在Mac上打包,执行python报Win32Exception的解决方案
  18. 这些年,这些挖掘机算法,这些反思
  19. 腾讯视频cKey9.1的生成分析和实现
  20. 在ie浏览器下载文件乱码解决

热门文章

  1. rhel7.0安装篇
  2. pgpool-II的master-slave模式的分析
  3. linux jvm启动过程,Linux操作系统启动过程详解
  4. java里pom.xml是啥意思_maven中pom.xml详细介绍
  5. mysql one database_MYSQL学习笔记one
  6. java mysql存储图片_Java存储图片到Mysql
  7. golang mac 环境变量_Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2...
  8. 得天独厚的生态优势_抚仙湖畔崛起一座生态城 全国党媒聚焦澄江生态文明建设...
  9. 数组中每个元素都出现了两次,但是其中一个元素只出现了一次,求出此元素
  10. linux系统下sed切割日志