我需要为以下问题陈述设计解决方案。
问题陈述- Perl 进程根据用户请求启动,并需要完成一些任务(比如 n);然后它将其移交给用 C++ 编写的守护进程。现在在这 n 个任务中,如果 m 个任务 (m < n) 已经完成,那么这些 m 任务的输出应该立即返回到相同或不同的 perl 进程,然后在完成时休息 nm 任务的结果。现在我的问题是 C++ 和 Perl 之间的通信。就执行速度而言,最好的方法应该是什么。
问题约束- Perl 代码必须仅在 Perl 中,而不是在 C++ 中,由于某些原因。将有多个客户端,向 C++ 守护程序发送请求。
可能的解决方案- 在向守护进程提交请求时,我将向 perl 进程返回一个唯一 ID。然后 C++ 守护进程和相同或不同的 perl 进程将使用该 ID 在以下任一进程上写入/读取输出。
1-FEFO 消息队列——将有单个队列;消息将按 ID 区分
2-mmap 实用程序(内存映射文件) ——每个文件名都是唯一的 id
在我看来,第二种方法的好处是执行速度和进一步的缓存可以很容易地实现。但我不确定这是否是最好的解决方案。
谁能建议我应该如何设计解决方案?我可能会遗漏一些重要的方面,而不是请指导我。