gpt4 book ai didi

c# - C# BlockingCollection 的 TryTakeFromAny 是否保证顺序检查 BlockingCollection 对象?

转载 作者:太空狗 更新时间:2023-10-30 00:51:33 27 4
gpt4 key购买 nike

我有两个阻塞集合 - 一个优先级高于另一个。如果我使用 TryTakeFromAny 并首先指定更高优先级的 BlockingCollection,是否可以保证首先查看更高优先级的队列?

最佳答案

这没有记录在案,所以我想说不能保证它将来不会改变。可能不建议长期依赖它。然而,目前,BlockingCollection<T>.TryTakeFromAny通过索引检查项目(它检查 Count > 0 然后执行 TryTake )循环遍历所有集合来进行快速检查。如果没有找到项目,它会为每个集合获取一个内部等待句柄并将它们传递给 WaitHandle.WaitAny .这提供了保证:

This method returns when any handle is signaled. If more than one object becomes signaled during the call, the return value is the array index of the signaled object with the smallest index value of all the signaled objects.

因此当前的实现确实会按要求运行。如果两个集契约(Contract)时获得一个项目,则将采用较低索引的项目。

关于c# - C# BlockingCollection 的 TryTakeFromAny 是否保证顺序检查 BlockingCollection 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26472251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com