进程间通信方式

https://www.cnblogs.com/zgq0/p/8780893.html
https://blog.csdn.net/violet_echo_0908/article/details/51201278

1.匿名管道:速度慢,容量有限,只有父子进程能通讯(本质是内核的一块缓存)
https://blog.csdn.net/zhangye3017/article/details/80189861

2.命名管道FIFO:任何进程间都能通讯,但速度慢(本质是一个文件)

3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题

4.信号量:不能传递复杂消息,只能用来同步

5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存

  1. 套接字通信:socket也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

  2. 信号:用于通知接收进程某个事件已经发生。

线程间同步方式

临界区(Critical Section)、互斥对象(Mutex):主要用于互斥控制;都具有拥有权的控制方法,只有拥有该对象的线程才能执行任务,所以拥有,执行完任务后一定要释放该对象。
信号量(Semaphore)、事件对象(Event):事件对象是以通知的方式进行控制,主要用于同步控制。
https://blog.csdn.net/guoxiang3538/article/details/79376191