比较Unix/Linux IPC
许多IPC由Unix / Linux提供:管道,套接字,共享内存,dbus,消息队列…
每个最合适的应用程序是什么,它们如何执行?
Unix IPC
这里是大七: > Pipe 仅在与父/子相关的进程中有用。呼叫 两个不相关的进程可以使用FIFO不同于普通管道。呼叫 双向。适合网络通信,但也可以在本地使用。可用于不同协议。 TCP没有消息边界。致电 OS维护离散消息。见sys/msg.h。 信号发送一个整数到另一个进程。不能很好地与多线程网格。致电 用于多进程或线程的同步机制,类似于人等待浴室的队列。见sys/sem.h。 做你自己的并发控制。致电 消息边界问题 在选择一种方法时,一个决定因素是消息边界问题。你可能期望“消息”彼此是离散的,但它不是像TCP或Pipe的字节流。 考虑一对echo客户端和服务器。客户端发送字符串,服务器接收它并立即发送它。假设客户端发送“Hello”,“Hello”和“如何回答?”。 使用字节流协议,服务器可以接收作为“地狱”,“oHelloHow”和“关于答案?或更现实地“HelloHelloHow关于答案?”。服务器没有消息边界的线索。 一个老年人的技巧是将消息长度限制为CHAR_MAX或UINT_MAX,并同意在char或uint中首先发送消息长度。所以,如果你在接收方,你必须先阅读消息长度。这也意味着只有一个线程应该一次执行消息读取。 使用像UDP或消息队列的离散协议,你不必担心这个问题,但是编程方式的字节流更容易处理,因为它们像文件和stdin / out。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |