三个进程之间的异步I / O.

时间:2012-02-05 22:48:07

标签: unix asynchronous ipc

(我使用异步消息遇到了一个非常复杂的软件,我遇到了一个棘手的错误,我认为这与异步I / O有关,所以我想澄清一些概念。)

有三个过程,A,B和C,A向B& B发送控制消息。 C通过unix管道。现在发生的事情是:进程A向B发送命令,如果网络链接未启动,B向C发送命令('link up'),C稍后向A确认它已完成,因此B可以改变其状态机状态。 同样在某个时刻,进程A向C发送'link up'命令。但是B中的状态机永远不会改变,尽管当我逐步调试GDB时,它正常运行(时间问题等等。?)。

另外,另一个观察 - 我在进程B和C中都设置了断点,然后执行A - 每次启动调试会话时,B或C都是第一个接收消息的,所以无法保证B或C总是第一个得到消息(我不明白为什么)。

异步消息是否可能无法按顺序传递,例如第一个发送到B然后发送到C - B可以接收其消息首先并且A得到它的消息第二个(第一个或第二个时间轴)?

我知道可能没有足够的信息来做出任何假设,但调试异步I / O的基本方法和类似于我的情况是什么?

提前多多感谢!

0 个答案:

没有答案