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