进程与线程-通信
-
进程间通信是指在不同进程之间传播或交换信息。进程间通信分为两大类:1同步、2消息传递。
-
同步使用的方式有:信号量、管程等。
-
消息传递有:管道(有名无名)、消息队列、套接字、信号、共享内存 。
-
同步
-
消息传递
-
消息队列
-
消息组成的链表,放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点
-
共享内存
-
共享内存允许多个进程共享一个给定的内存区域,这一段存储区可以被共享的进程映射至自身的地址空间中,一个进程写入共享内存的信息,可以被其他使用这个共享内存的进程,通过简单的内存读取操作来读出,从而实现了进程间的通信。
-
采用共享内存进行通信的一个主要好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝,对于像管道和消息队里等通信方式,则需要再内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次:一次从输入文件到共享内存区,另一次从共享内存到输出文件。
-
套接字
- 套接字(socket)是一个抽象层,主要用于网络间传递消息,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。