面试:进程通信和线程通信

进程间通信主要包括管道、系统IPC和套接字

1.管道

管道分为普通管道和命名管道

普通管道是半双工通信方式,只允许有亲缘关系的进行间进行通信,管道可以看成特殊的文件,但它不属于任何文件系统,只存在于内存中,可以通过read 和write对他进行读写

命名管道允许无亲缘关系的进程间通信

2.系统IPC

(1)消息队列

消息队列是消息的链接表,每一个消息队列都有一个标识符,就是队列ID,消息队列克服了信号传递信息少、管道只能传递无格式字节流、缓冲区大小受限等特点,具有读权限的进程可以从消息队列里读消息,具有写权限的进程可以向消息队列里添加新记录

消息队列的特点:消息队列是面向记录的,消息队列里面的记录是有格式和优先级的

                             消息队列独立于发送进程和接受进程,消息队列不会随着进程的结束而消失

                             可以实现消息队列里记录的随机查询,不用非得按照先进先出的顺序查询

(2)信号量

信号量是一个计数器,用于对访问同一个内存资源的多个进程进行计数,它用于进程间同步和互斥,不用于进程间传递数据,要是传递通信数据的话还需要结合共享内存。

(3)信号

信号是一种比较复杂的通信方式,用于通知接受进程事件的发生

(4)共享内存

不同进程可以看到对方进程对共享内存数据的更新,这种方式需要某种同步机制,比如互斥锁和信号量,共享内存是一种最快的进程IPC,因为进程可以直接对内存进行读取。

3.套接字

套接字允许不同主机间的进程进行通信

 

 

线程间通信:

(1)临界区

通过多线程的串行化允许线程对共享资源的访问,速度快

(2)互斥量

只有拥有互斥对象的线程才能对资源空间进行访问,因为互斥对象只有一个,所以可以保证公共资源不被多个线程访问

(3)信号量

用于控制多个线程对共享空间资源的访问,一般会限制同一时刻访问资源的最大线程数

(4)信号

通过通知操作的方式来控制线程间的同步,可以区分线程间的优先级

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值