进程间通信(个人总结)

来源:互联网 发布:前锦网络信息技术 编辑:程序博客网 时间:2024/04/28 01:54

对于进程间通信(interprocess communication )的几种机制,我在前面都是零散的归纳,并且写出了每种机制的使用方法,但是没有系统的进行过归类。最近在一位学长的推荐下,通过阅读外文资料,脑海里对于这方面的知识真是清晰了许多,我觉得有必要跟大家分享一下。

1.首先对于进程间通信工具的分类:

unix下的通信和同步工具,按照功能上划分,大致分为以下几类:

(1)通信类:这些工具是用来进程间交换数据。

(2)同步类:这些工具是与线程和进程间的同步操作相关。

(3)信号类:信号通常用于某些特定的目的,也可以在一些特定的情况下解决同步问题。

在书上看到的总结归类图,写的非常地详细。

通信类工具包含,数据传输(data transfer)和shared memory(共享内存)。数据传输下包含了(1)字节流(byte stream):pipe,FIFO,stream socket;(2)pseudoterminal();(3)message(消息):System v message queue,POSIX message queue,datagram socket;

共享内存下,包含了(1)System V shared memory;(2)POSIX shared memory;(3)memory mapping(内存映射):anonymous mapping(匿名映射),mapped file;


信号类工具包含,standard signal和realtime signal。


同步类工具包含了(1)semaphore:System V semaphore,POSIX semaphore(其中又包含命名的和未命名的)。(2)文件锁(file lock)。(3)mutex(互斥量)(4)条件变量(condition variable)

互斥量和条件变量适用于线程之间解决同步性的问题。


参考资料:linux的程序接口设计

原创粉丝点击