进程间通信方式:

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. Linux查找文件内容(grep)
  2. 50个Android开发技巧(09 避免用EditText对日期进行验证)
  3. java io null异常_大量java.lang.InterruptedException: null异常,数据没有同步
  4. vi和vim命令行编辑器命令
  5. 【代码笔记】Web-ionic单选框
  6. Excel小账本的来历
  7. 基于Unique ID的单片机程序加密系统 单片机唯一ID程序加密
  8. 如何使用MSGEQ7音频频谱分析仪芯片
  9. Oracle导出数据中的prompt,set feedback 等是什么意思
  10. Kotlin读书总结之面向对象
  11. coldfusion_为ColdFusion辩护
  12. html网页什么样的字体最好看,css设置各种中文字体样式代码
  13. flash ActionScript快速入门(全部章节)
  14. 名帖370 赵孟頫《真草千字文》
  15. 如何自定义百度云常用服务器,经验分享:如何将百度云做成网站文件服务器
  16. 佛用品须以恭敬心待之
  17. Vue系统指令(一)
  18. 15 - 单星(*) 和双星(**) 运算符的作用
  19. Android系统权限和root权限的获取以及应用权限列表
  20. 组播路由协议PIM DM/SM模式概述

热门文章

  1. 中望3D2022建模注意事项
  2. 计算机办公基础知识点归纳,计算机基础知识点归纳 (1).doc
  3. Android 模拟器genymotion安装,eclipse 插件
  4. oracle高效率insert写法
  5. js 遍历对象属性,赋值/添加进另一个对象中
  6. new delete 详解
  7. repmat命令的使用方法
  8. 《自然语言处理》第二次实验:机器翻译(Transformer中英文翻译实验)
  9. 联想电脑出现boot menu怎么办
  10. kodi没有中文设置_kodi播放器设置中文的方法