如何设计2个有互相调用关系的进程间通讯

比如a调用b执行一个设置
b处理过程中又需要查询a的数据库


如果一个方向采用异步,会割裂该模块逻辑,头痛。。。

建议使用多线程,比如a进程中创建多个线程完成不同的功能。
在规划进程的时候就要考虑到模块功能以及进程/线程通讯模式。

之前看过另外一个帖子,说使用多线程也有隐患,如果某个rcv线程里调用了send,那么还是有可能造成互锁
里面说用event实现,但是这样会割裂模块原有逻辑

使用多线程的意思,打个比方,是一个线程负责收,一个(多个)线程负责处理、发送;收数据线程只接收数据,然后转交给处理、发送线程(线性表,队列)。

即使是这样的设计,也会有隐患。比如收数据线程与别的线程间有没有互锁同步。如果增加收线程个数,同步关系会更复杂。这个需要在设计时仔细考虑周到。

传统的方法(以前还没有线程呢),是设立第三方进程C,A和B通过C进行通讯。由C做为中间人传递数据;这种做法的缺点是数据传递效率相对比较低。