各类进程间通信的区别 线程与进程之间的区别

无名管道:

1、只能从进程A传到另一个进程B,消息流通具有单向性(半双工通信)

2、未满不读(进程A在传信息没把管道的空间占满之前,进程B都不能读进程A传递过来的信息)

3、已满不写(进程A传递信息将管道空间占满后,进程A将不再对管道进行写操作)

4、未空不写(进程B在读取管道消息时为将管道信息读完并删除完之前,进程A不能进行进一步的读操作)

5、已空 不读(进程B将管道的信息读完后,将不再对管道进行进一步的读操作)

6、读后删除(进程B从管道读完后,将管道读到的信息删除)

7、只能进行有亲缘关系的进程之间的通信

有名管道:

1、可以对没有亲缘关系的进程之间进行通信

管道使用情景:

1、半双工。数据只能在一个方向上流动。

2、单独构成一个独立的文件系统。管道对于管道两端的进程而言就是一个文件,但它不是变通的文件,而是单独构成一种文件系统,并且只存在于内存中。

3、缓冲区是有限制的(管道存在于内存中,在管道创建时,为缓冲区分配一个页面大小)

4、管道传送的数据不限定格式。可以传递Json、数字、xml等格式数据。

消息队列:

客服了信号传递信息少、克服管道承载无格式字节流以及缓冲区大小受限制的问题

共享内存:

共享内存是最快的一种进程间通信的方式也是效率最高的一种进程间通信的方式,通常搭配其它进程间通信进行使用(例如信号)

信号量:

1、用于临界区的互斥访问

2、条件同步:线程之间的事件等待

线程与进程之间的区别:

将进程比作火车,线程比作车厢

1、进程是cpu调度的最小单位,线程是资源分配的最小单位

2、线程是在进程下运行的,单纯的车厢是无法运行的

3、一个进程包含多个线程,一个火车包含多个车厢

4、进程之间的数据很难共享,比如火车A的人想去火车B去乘坐

5、同一个进程下的多个线程数据很容共享,例如火车A的车厢1的乘客换到车厢2是很容易的

6、进程要比线程消耗更多的计算机资源,采用多列火车比一列火车使用多个车厢资源开销要大

7、进程之间不会相互影响,火车A着火了不会影响到火车B

8、同一个进程下的一个线程出问题,那么整个进程将出问题,例如火车A的一间车厢着火将把整个火车给弄着火

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值