Open
Description
首先很感谢作者一直在维护这个库,最近才发现这个库,看了代码,不得感慨写的真的太好了,代码风格也是我很喜欢的类型。感谢作者的付出。
我的问题是:
系统:windows
场景:
1.有一个主进程,和N个子进程(可能2~10个),主进程在收到消息以后,会把工作任务丢给指定的子进程。此时主进程会阻塞等待子进程任务完成,返回结果,这里会有一个最大的超时时间,超过后就不等待了。
2.主进程有N个线程,这个N个线程是并行的,所以可能会同时收到来自客户端的很多消息,并且可能同时把任务投递给指定的子进程。
3.子进程有一个接收任务线程,和N个工作线程,接收任务线程收到任务后,把任务发到工作线程就不管了(这里投递任务到工作线程用的不是cpp-ipc),此时工作线程收到任务开始工作,并且在工作线程完成任务的时候直接把任务结果发回给主进程。
4.任务一旦被绑定到指定子进程,那以后每个任务都只会投递给对应的子进程。
问题:
1.我是不是应该为主进程跟每一个子进程都创建一个ipc::chan<single,single,unicast>(例如10个子进程就有10个ipc::chan),并且同时都赋予他们sender跟recvier的属性?因为需要双向通信。
2.主进程中发信息可能会有多根线程同时用同一个ipc::chan来给指定子进程发消息,那子进程回复的时候,如何把消息发回到主进程的指定线程里呢?
3.子进程中收信息跟发信息不是同一根线程,收发会不会有冲突?
3.除开业务代码自身的稳定性问题,框架会不会出现在某种情况下消息发不出去或者消息收不到的情况。
上述的问题在不改动框架的情况下 用cpp-ipc能解决吗?
Metadata
Metadata
Assignees
Labels
No labels