您的位置:科技频道 > 科学 > 正文

进程间通信和线程间通信的区别有哪些?进程间通信效率最高的是什么方式?

来源:洞察网 时间:2022-10-25 21:12:03

进程间通信和线程间通信的区别

可以根据以下四方面来分析:

1、拥有资源

进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。

2、调度

线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。

3、系统开销

由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。

4、通信方面

线程间可以通过直接读写同一进程中的数据进行通信,但是进程通信需要借助IPC。

进程间通信效率最高的是什么

要想知道 管道、消息队列、共享内存 这三个通信方式都效率 那就先得了解一下它们都通信机制和特点才能进行比较

1、管道

管道允许在进程之间按先进先出的方式传送数据,是进程间通信的一种常见方式。管道允许数据写入缓冲区,另一端的进程则顺序地读取数据,该缓冲区可以看做一个循环队列,读和写的位置都是自动增加的,一个数据只能被读一次,读出以后再缓冲区都不复存在了。当缓冲区读空或者写满时,有一定的规则控制相应的读进程或写进程是否进入等待队列,当空的缓冲区有新数据写入或慢的缓冲区有数据读出时,就唤醒等待队列中的进程继续读写。

2、消息队列

消息队列,就是一个消息的链表,是一系列保存在内核中消息的列表。用户进程可以向消息队列添加消息,也可以向消息队列读取消息。

消息队列与管道通信相比,其优势是对每个消息指定特定的消息类型,接收的时候不需要按照队列次序,而是可以根据自定义条件接收特定类型的消息。

可以把消息看做一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息,对消息队列有读权限的进程可以从消息队列中读取消息。

3、共享内存

共享内存允许两个或多个进程共享一个给定的存储区,这一段存储区可以被两个或两个以上的进程映射至自身的地址空间中,一个进程写入共享内存的信息,可以被其他使用这个共享内存的进程,通过一个简单的内存读取错做读出,从而实现了进程间的通信。

采用共享内存进行通信的一个主要好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝,对于像管道和消息队里等通信方式,则需要再内核和用户空间进行四次的数据拷贝。

因此,采用共享内存的通信方式效率要比管道和消息队列的高。

精彩推送

公司

新一期麻辣粉和逆回购操作如期公布。9月15日,央行发布消息称,为维护银行体系流动性合理充裕,开展4000亿元中期借贷便利(MLF)操作和20亿元

详细>>

经历了换队友的风波后,西藏珠峰(600338)5万吨碳酸锂当量盐湖提锂项目再度生变。9月15日晚间,新队友柘中股份发布公告宣布暂缓与西藏珠峰、

详细>>

因未能充分披露核心技术的先进性,武汉珈创生物技术股份有限公司(以下简称珈创生物)科创板IPO在上会阶段被否。经历了一年左右的调整,珈创

详细>>

企业超标排放,损害了生态环境,除了罚款,怎么补偿?替代性修复是其中一个办法,好比砍了树,再把树种回去。而在深圳罗湖,还有一个新办法

详细>>

26家企业齐聚湛江,11家企业分别与湛江经济技术开发区、巴斯夫公司签订合作协议,协议总投资额约70亿元,预计产值超110亿元……9月15日,湛

详细>>

8月30日,第八届中国广州国际投资年会暨首届全球独角兽CEO大会开幕。大会期间,空港分会场聚焦建设临空产业制造高地,提出广州将打造全球飞

详细>>