进程间通信的⼏种⽅式以及线程间通信的⼏种⽅式
进程间通信 共享内存进程间通信的⼏种⽅式
  1、管道(pipe):
    管道是⼀种半双⼯的通信⽅式,数据只能单向流动,⽽且只能⽤于⽗⼦进程或者兄弟进程之间(具有亲缘关系的进程)
  2、有名管道(namepipe):
    有名管道也是半双⼯的通信⽅式,但是它允许⽆亲缘关系进程间的通信
  3、信号量(semophore):
    信号量是⼀个计数器,可以⽤来控制多个进程对共享资源的访问。它常作为⼀种锁机制,防⽌某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同⼀进程内不同进程之间的同步⼿段
  4、消息队列( messagequeue ) :
消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载⽆格式字节流以及缓冲区⼤⼩受限等缺点。
  5、信号 (sinal ) :
信号是⼀种⽐较复杂的通信⽅式,⽤于通知接收进程某个事件已经发⽣。
  6、共享内存(shared memory ) :
共享内存就是映射⼀段能被其他进程所访问的内存,这段共享内存由⼀个进程创建,但多个进程都可以访问。共享内存是最快的 IPC ⽅式,它是针对其他进程间通信⽅式运⾏效率低⽽专门设计的。它往往与其他通信机制,如信号两,配合使⽤,来实现进程间的同步和通信。
  7、套接字(socket ) :
套接⼝也是⼀种进程间通信机制,与其他通信机制不同的是,它可⽤于不同设备及其间的进程通信。
线程间的通信⽅式
  1、锁机制:包括互斥锁、条件变量、读写锁
  互斥锁提供了以排他⽅式防⽌数据结构被并发修改的⽅法。
读写锁允许多个线程同时读共享数据,⽽对写操作是互斥的。
条件变量可以以原⼦的⽅式阻塞进程,直到某个特定条件为真为⽌。对条件的测试是在互斥锁的保护下进⾏的。条件变量始终与互斥锁⼀起使⽤。
  2、信号量机制(Semaphore):包括⽆名线程信号量和命名线程信号量
  3、信号机制(Signal):类似进程间的信号处理
线程间的通信⽬的主要是⽤于线程同步,所以线程没有像进程通信中的⽤于数据交换的通信机制。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。