进程间通信方式:

1.管道( pipe ):
管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。缺点:速度慢,容量有限,只有父子进程能通讯

2.有名管道 (namedpipe) :
有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。但速度慢。

3.信号量(semophore ) :
信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。缺点:不能用来传递复杂消息,只能用来同步

4.消息队列( messagequeue ) :
消息队列是由消息组成的链表,存放在内核中并由队列ID标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。缺点:信息的复制需要额外消耗CPU的时间,不适宜于信息量大或操作频繁的场合
特点:
1, 消息队列可以认为是一个全局的一个链表,链表节点钟存放着数据报的类型和内容,有消息队列的标识符进行标记。
2,消息队列允许一个或多个进程写入或者读取消息。
3,消息队列的生命周期随内核。
4,消息队列可实现双向通信

5.信号 (sinal ) :
信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。主要作为进程间以及同一进程不同线程之间的同步手段。

6.共享内存(shared memory ) :
共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

7.套接字(socket ) :
套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

二、线程间的通信方式

1.锁机制:包括互斥锁、条件变量、读写锁
互斥锁提供了以排他方式防止数据结构被并发修改的方法。
读写锁允许多个线程同时读共享数据,而对写操作是互斥的。
条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。
2.信号量机制(Semaphore):包括无名线程信号量和命名线程信号量
3.信号机制(Signal):类似进程间的信号处理
线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。

进程间通信方式和线程间通信方式相关推荐

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

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

  2. 面试题:进程间通信方式,线程间通信方式

    一.进程间通信(IPC,Inter-Process Communication)是指在不同进程间传播或交换信息 1. 无名管道 特点 半双工(数据流向仅有一个方向),具有固定的读端和写端 只能用于父进 ...

  3. Linux的进程/线程间通信方式总结

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

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

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

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

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

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

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

  7. Python线程间通信方式

    1.python多线程 #! /usr/bin/evn python3 # --*-- coding: utf-8 --*--#该实例反编译来说明函数执行流程 import disdef add(a) ...

  8. 线程间通信方式Linux,线程间的通信、同步方式与进程间通信方式

    1.线程间的通信方式 使用全局变量 主要由于多个线程可能更改全局变量,因此全局变量最好声明为volatile 使用消息实现通信 在Windows程序设计中,每一个线程都可以拥有自己的消息队列(UI线程 ...

  9. Linux 线程间通信方式、进程通信方式

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

最新文章

  1. Tensor Decomposition
  2. 大数据和云计算时代的机遇
  3. hibernate 高级映射 --张国亮总结第一季
  4. 深度学习入门之感知器(原理+代码)
  5. nssstring 转换大小写
  6. lucene学习5----Field类及辅助类说明
  7. 人人都能够做深度学习应用:入门篇
  8. linux下mysql的忘记root密码的解决办法
  9. oracle 删除xml记录,Oracle之xml的增删改查操作
  10. Jenkins Pinned Plugins(Jenkins绑定插件)
  11. 93. 复原IP地址
  12. 《大数据技术原理与应用》—— 提纲
  13. snmpwalk 获取端口流量_通过snmpwalk命令计算接口速率
  14. 校园二手市场需求分析
  15. CentOS 某服务器搭建问题收集
  16. ARC120F Wine Thief (组合数学)
  17. wamp3.1.4下载及WampServer下增加多版本PHP
  18. 各大工作室都在用的视觉特效软件,开启你的虚拟制作之旅
  19. 苹果手机各种型号图片_一图看懂iPhone各机型机身尺寸大小对比!
  20. application中 android:icon 和 android:roundIcon 的区别

热门文章

  1. UBI文件系统遇到的问题
  2. python多项式回归_使用Python的多项式回归
  3. struts2-21常用标签解说
  4. 图像仿射变换原理1:齐次坐标来龙去脉详解
  5. 用html做祝福语朋友,写给朋友的祝福语推荐
  6. 程序员拥有哪些特质才不会被淘汰?
  7. 网秦公布2016年第一季度财报 净营收为7350万美元
  8. 如何从字符串中取字符
  9. Mybatis-Plus--QueryWrapper--使用/实例
  10. CSS中的position:relative理解