我需要两个进程P和Q来通过4KB长的消息进行通信。所有消息都属于会话。会话以P成功发送到Q的第一条消息开始,并在两个进程中的任何一个向另一个进程发送Stop消息或进程终止时结束。每个进程都可以发送和接收来自其他进程的消息。发送和接收操作必须阻止,直到分别发送或接收整个消息或发生超时,否则将引发错误。
目前,我的想法是在共享内存中使用Socket和两个队列(一个用于从P到Q的消息,一个用于从Q到P的消息)。 Socket的唯一目的是正确实现我描述的会话概念:当P向Q发送第一个消息时它被打开,当两个进程中的一个想要故意终止会话时被关闭(等同于上面描述的Stop消息)或者如果两个进程中的一个由于某些原因终止(这将由OS自动完成)。在这两种情况下,可以很容易地通知剩余的过程。这些队列对于接收或发送消息非常有用,因为我认为通过套接字没有简单的方法可以做到这一点。
有没有比上述更简单的解决方案?我可以完全访问C ++ 11,boost(例如IPC部分)和POCO库(例如适用于Socket类型)。除非它们只是标题,否则不允许使用其他库。
我不关心效率。