我正在运行一个Ruby线程池(例如Thread.pool(10)
),我遇到了如何处理分配任务背后的逻辑问题。
我希望一次运行10个任务,这通常可以正常工作 - 但是,pool.process{...]
在使用10个线程后不会阻塞主线程 - 它会不断加载任务(所以我的{{1循环是将大量的任务加载到池中,这是不正确的......我实际上需要检查以查看十个任务中的任何一个是否在加载更多之前返回'false'。所以,简单地说,我想一次运行10个任务和只在运行的任务少于10个时才将新任务加载到池中。
我不应该使用游泳池吗?
答案 0 :(得分:0)
在玩了很多这个之后,我最终不得不重构我的代码以更好地适应我正在做的事情的逻辑。 Thread.pool有一些有趣的功能,例如trim,但在线描述对我来说并没有足够的意义使用它们。
简而言之:只有在您已经检查过您希望运行子任务后,才应运行pool.process。