我需要执行一些(比方说10个)少于(即)3个参与者的任务。
但我不想在一开始就分配所有的任务,因为执行时间可能会有所不同。这就是为什么我需要给他们所有人发送一个任务,当任何一个任务完成时,他将被分配一个新的任务。这样,当第一个任务需要3秒,而其余任务只需要0.5秒时,可以在3秒内完成任务。
有10个任务列表:
(() => Thread.sleep(3000); println("done long"}) :: (1..9).map({() => println("done short")})我想要输出:
done short
done short
done short
done short
done short
done short
done short
done short
done short
done long我可以编写经理角色,将角色返回给经理,并重新分配工作,但我希望在Scala或Akka中找到固定的解决方案。
发布于 2012-01-31 19:00:37
Akka支持调度器,特别是工作窃取。有关详细信息,请查看this帖子。
https://stackoverflow.com/questions/9078312
复制相似问题