进程间通信方式和线程间通信方式
进程间通信方式:
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):类似进程间的信号处理
线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。
进程间通信方式和线程间通信方式相关推荐
- Android 进程间通信方式和线程间通信方式
1.进程和线程 进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独 ...
- 面试题:进程间通信方式,线程间通信方式
一.进程间通信(IPC,Inter-Process Communication)是指在不同进程间传播或交换信息 1. 无名管道 特点 半双工(数据流向仅有一个方向),具有固定的读端和写端 只能用于父进 ...
- Linux的进程/线程间通信方式总结
Linux系统中的进程间通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程 ...
- android线程间通信的几种方法_Android进程间和线程间通信方式
进程:是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程:是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位 ...
- Linux 线程间通信方式+进程通信方式
1. linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能 ...
- linux的进程与线程通信方式,Linux的进程/线程间通信方式总结
Linux系统中的进程间通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程 ...
- Python线程间通信方式
1.python多线程 #! /usr/bin/evn python3 # --*-- coding: utf-8 --*--#该实例反编译来说明函数执行流程 import disdef add(a) ...
- 线程间通信方式Linux,线程间的通信、同步方式与进程间通信方式
1.线程间的通信方式 使用全局变量 主要由于多个线程可能更改全局变量,因此全局变量最好声明为volatile 使用消息实现通信 在Windows程序设计中,每一个线程都可以拥有自己的消息队列(UI线程 ...
- Linux 线程间通信方式、进程通信方式
Linux线程间通信几种主要的手段 1. 管道: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有 ...
最新文章
- Tensor Decomposition
- 大数据和云计算时代的机遇
- hibernate 高级映射 --张国亮总结第一季
- 深度学习入门之感知器(原理+代码)
- nssstring 转换大小写
- lucene学习5----Field类及辅助类说明
- 人人都能够做深度学习应用:入门篇
- linux下mysql的忘记root密码的解决办法
- oracle 删除xml记录,Oracle之xml的增删改查操作
- Jenkins Pinned Plugins(Jenkins绑定插件)
- 93. 复原IP地址
- 《大数据技术原理与应用》—— 提纲
- snmpwalk 获取端口流量_通过snmpwalk命令计算接口速率
- 校园二手市场需求分析
- CentOS 某服务器搭建问题收集
- ARC120F Wine Thief (组合数学)
- wamp3.1.4下载及WampServer下增加多版本PHP
- 各大工作室都在用的视觉特效软件,开启你的虚拟制作之旅
- 苹果手机各种型号图片_一图看懂iPhone各机型机身尺寸大小对比!
- application中 android:icon 和 android:roundIcon 的区别