进程间的通信方式有几种?
了解进程间的通信方式之前,需要了解两个概念,即IPC和RPC。
IPC(Inter-process-commutation):同一台计算机的进程通信
RPC(Remote-process-commutation):不同计算机之间的进程通信,需要遵守网络协议,比如微服务、HTTP协议常用的RPC接口调用
进程间通信方式主要为以下六种:
1、管道(pipe)
分为匿名管道和命名管道两种,匿名管道可用于具有父子进程间的通信,命名管道除了具有管道所具有的功能外,还允许无亲缘关系的进程之间的通信。
2、信号(signal)
信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某件事发生,一个进程收到一个信号与处理器收到一个中断请求在效果上是一致的。
3、消息队列(Message Queue)
消息队列是一种常用的进程间通信方式,克服了上述两种方式种信号量有限的缺点,具有写权限的进程可以按照一定的规则给MQ中添加Message。生产者发消息,接守者消费消息。
4、共享内存(shareMemory)
特点是多个进程可以访问同一块内存空间,不同进程可以看到对方进程中对共享内存中数据的更新。这种方式依赖于某种同步操作,如加互斥锁和信号量等,这个功能需要考虑一些并发的问题,一般用锁机制等一些事务控制的方式。
5、信号量(semaphore)
主要作为进程之间及同一种进程的不同线程之间的同步和互斥手段。
6、套接字(Socket)
比较普通普通的方式,可用于网络中不同机器之间的进程间通信,应用比较广泛。