我知道有几种进程间通信方法(ipc),例如:
然而,我无法找到相互比较这些机制的清单或文件,并指出它们在不同的环境中的好处。
例如,我知道如果我使用一个由进程A写入的文件而进程B将其读出来它将在任何操作系统上运行并且非常强大,另一方面 - 为什么我不应该使用TCP套接字?有没有人对哪种方法最适合的情况进行概述?
答案 0 :(得分:2)
长话短说:
当进程竞争稀缺资源时,使用锁文件,互斥锁,信号量和障碍。它们以类似的方式运行:多个进程尝试获取同步原语,其中一些获取它,其他进程处于休眠状态,直到原语再次可用。使用信号量来限制使用资源的进程数量。使用互斥锁将金额限制为1.
您可以通过使用非阻塞线程安全数据结构来部分避免使用同步原语。
当进程需要交换数据时,使用信号,队列,管道,事件,消息,unix套接字。信号和事件通常用于通知某个进程(例如,unix终端中的ctrl+c
向进程发送SIGINT
信号。管道,共享内存和unix套接字用于传输数据。
使用套接字进行联网(或者,正式说来,用于在位于不同计算机上的进程之间交换数据)。
长篇故事:看看Tanenbaum& amp; amp; amp; amp; amp; Bos,即IPC章节。这个主题很广泛,无法在列表或论文中完全涵盖。