Rust tokio调度程序工作窃取vs全局队列

Rust tokio调度程序工作窃取vs全局队列,rust,tokio,Rust,Tokio,在rust tokio中,当处理器完成运行队列中的所有任务时,他们是先查看全局队列中的更多任务,还是先尝试从同级处理器偷取工作?如果这是未记录的,我认为这是未指定的,并且不是图书馆保证的一部分,除非您可以获得一个问题或PR接受来指定这种行为。我强烈建议不要依赖当前的行为 话虽如此,使用luke代码只需一小步:主运行循环将是。当本地队列为空时,它调用首先开始从同级窃取工作的队列,然后返回到全局队列 请注意,在正常操作过程中,调度器会偶尔尝试从全局队列弹出任务,但注意: 在从本地队列执行约60个任务

在rust tokio中,当处理器完成运行队列中的所有任务时,他们是先查看全局队列中的更多任务,还是先尝试从同级处理器偷取工作?

如果这是未记录的,我认为这是未指定的,并且不是图书馆保证的一部分,除非您可以获得一个问题或PR接受来指定这种行为。我强烈建议不要依赖当前的行为

话虽如此,使用luke代码只需一小步:主运行循环将是。当本地队列为空时,它调用首先开始从同级窃取工作的队列,然后返回到全局队列

请注意,在正常操作过程中,调度器会偶尔尝试从全局队列弹出任务,但注意:

在从本地队列执行约60个任务后,处理器将尝试从全局队列弹出


好的,非常感谢!我很好奇偷取任务与只查看全局队列相比有什么好处?@LouisLee全局队列主要用于溢出或从非调度程序线程调度的任务,因此在正常操作中它可能是空的,特别是因为检查全局队列是正常操作的一部分。如果每个调度器在没有本地工作的任何时候都选择全局队列,那么也会在该队列上产生大量争用。