Linux系统中的进程间通信方式主要以下几种:

同一主机上的进程通信方式

* UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal)

* System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Shared Memory)

网络主机间的进程通信方式

* RPC: Remote Procedure Call 远程过程调用

* Socket: 当前最流行的网络通信方式, 基于TCP/IP协议的通信方式.

各自的特点如下:

  • 管道(PIPE):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系(父子进程)的进程间使用。另外管道传送的是无格式的字节流,并且管道缓冲区的大小是有限的(管道缓冲区存在于内存中,在管道创建时,为缓冲区分配一个页面大小)。
  • 有名管道 (FIFO): 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
  • 信号(Signal): 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
  • 信号量(Semaphore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
  • 消息队列(Message Queue):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  • 共享内存(Shared Memory ):共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。
  • 套接字(Socket): 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同主机间的进程通信。

Linux系统中的线程间通信方式主要以下几种:

*  锁机制:包括互斥锁、条件变量、读写锁

互斥锁提供了以排他方式防止数据结构被并发修改的方法。

读写锁允许多个线程同时读共享数据,而对写操作是互斥的。

条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。

*  信号量机制(Semaphore):包括无名线程信号量和命名线程信号量

*  信号机制(Signal):类似进程间的信号处理

线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。

Linux的进程/线程间通信方式总结相关推荐

  1. linux的进程与线程通信方式,Linux的进程/线程间通信方式总结

    Linux系统中的进程间通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程 ...

  2. Linux 线程间通信方式+进程通信方式

    1. linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能 ...

  3. android线程间通信的几种方法_Android进程间和线程间通信方式

    进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位 ...

  4. Linux查看进程线程个数

    1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...

  5. Linux的进程/线程/协程系列4:进程知识深入总结:上篇

    Linux的进程/线程/协程系列4:进程/线程相关知识总结 前言 本篇摘要: 1. 进程基础知识 1.1 串行/并行与并发 1.2 临界资源与共享资源 1.3 同步/异步与互斥 1.4 进程控制原语 ...

  6. linux的进程/线程/协程系列1:进程到协程的演化

    linux的进程/线程/协程系列1:进程到协程的演化 前言 摘要: 1. 一些历史:批处理时代 2. 现代操作系统启动过程 3. 进程(process)的出现 4. 线程(thread)与线程池 5. ...

  7. linux 编程 调度,Linux的进程线程及调度

    搜索热词 本文为宋宝华<Linux的进程.线程以及调度>学习笔记. 1 进程概念 1.1 进程与线程的定义 操作系统中的经典定义: 进程:资源分配单位. 线程:调度单位. 操作系统中用PC ...

  8. Linux多线程编程---线程间同步(互斥锁、条件变量、信号量和读写锁)

    本篇博文转自http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/ Linux下提供了 ...

  9. Android 进程间通信方式和线程间通信方式

    1.进程和线程 进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独 ...

最新文章

  1. Caffe中Layer注册机制
  2. php学习之道:WSDL具体解释(三)
  3. 用计算机测出你真实的年龄,一款神奇的App:能够测出你的真实年龄
  4. python爬虫工程师-记录一下自己找“python爬虫工程师实习生”岗位的经历
  5. apache证书不受信任_苹果iOS手动安装和信任企业级应用
  6. java 8 stream_深度分析:java8的新特性lambda和stream流,看完你学会了吗?
  7. 8idmp导入oracle 11g,11g导入8i的dmp文件问题
  8. 定义一个手表_华米Amazfit Pop评测:一款功能全面的“性价比”手表
  9. python重定向到socket_python套接字流重定向实例汇总
  10. [大数据行业应用发展前景分析] 阿里潘永花报告:大数据产业将成为新的煤和石油介绍...
  11. 10备忘录没有表格_我的投资备忘录(2020年12月04日)
  12. 二叉树的非递归遍历,还有一点黑科技
  13. 2021-11-03
  14. 【广东大学生网络攻防大赛-WriteUp(非官方)】Misc | 复合
  15. 阿里CTO程立:科技公司的技术创新和责任担当
  16. 超像素经典算法SLIC的代码的深度优化
  17. 速 营 社 适合哪些人
  18. 腾讯云申请免费ssl证书(1年有效期)
  19. 2021年锦州高考成绩查询,2021年锦州高考状元多少分是谁,锦州高考状元名单资料...
  20. 共享场地预约小程序系统软件开发方案

热门文章

  1. Win8装SQL2008需要离线安装 .Net3.5
  2. Windows Phone 开发环境的搭建
  3. 图书 网管天下系列图书 之 网络管理工具实用详解 目录
  4. iOS之深入解析内存对齐的底层原理
  5. 2018年第九届蓝桥杯 - 省赛 - C/C++大学B组 - F.递增三元组
  6. 2014/School_C_C++_B/2/调和级数
  7. 287. Find the Duplicate Number
  8. 完美的项目从完美的表开始
  9. 10.2.3 基本属性
  10. BASIC-2 01字串