以下 senario 是使用线程完成的
@work_queue
由主线程填充/排队的大型队列。在这里使用Thread::Queue
。- ≥ 2 个连接对象被添加,
@conns
其中必须作为加载过程的一部分被串行加载使用Expect->spawn
- 调用多个 Worker 线程,每个线程都给定一个
$conns[$i]
对象和对 shared 的引用\@work_queue
。 - 工作线程从它的连接对象中安全地删除一个项目
@work_queue
并执行一些处理,之后它从 中获取下一个可用项目@work_queue
。 - 当它
@work_queue
为空时,所有线程将安全关闭
现在,问题是在许多情况下加载阶段花费的时间太长。但是由于使用,只能在单独的进程而不是线程上进行Expect->spawn
并行加载。@conns
请提出一个使用 fork 实现上述场景的好方法。或者,如果有一种Expect->spawn
与线程一起使用的方法,那就更好了。(仅限 UNIX/LINUX)