gpt4 book ai didi

c# - ThreadPool.QueueUserWorkItem preferLocal 有什么用?

转载 作者:行者123 更新时间:2023-11-30 20:15:43 26 4
gpt4 key购买 nike

我刚刚注意到 .NET 核心引入了 Threadpool.QueueUserWorkItem 的重载,它接受一个名为“preferlocal”的 bool 值并允许我传递一个类型安全的状态对象(它有一个通用参数)

MSDN documentation目前是不完整的,看起来像这样(为了后代 - 它可能会在未来更新):

QueueUserWorkItem<TState>(Action<TState>, TState, Boolean)
C#

public static bool QueueUserWorkItem<TState> (Action<TState> callBack, TState state, bool preferLocal);

Type Parameters TState

Parameters
callBack Action<TState>

state

preferLocal Boolean

Returns
Boolean

这个 bool 值 (preferLocal) 有什么用,它将如何影响我的代码?

最佳答案

看起来是由this pull request添加的链接到 this issue (Github 链接分别为“添加 ThreadPool.QueueUserWorkItem(..., bool preferLocal)/#14214”和“为本地线程池队列添加 QueueUserWorkItem/#12442”)。

问题描述如下:

ThreadPool.QueueUserWorkItem always queues to the global queue; however it would be good to have the option to be able to queue to the current threadpool thread's local queue when a threadpool thread queues extra work items.

Rationale and Usage

  • Reduced contention on the global queue when many threads are queuing
  • Potentially hotter more local data when the queuing work item completes
  • Take advantage of threadpool's task stealing
  • (i.e. Similar to Task's rational for doing it for child Tasks)

对我来说,遗憾的是最新的在线文档(MSDN 文档是从中生成的)不是拉取请求的先决条件。


最初构建线程池时,它只有一个工作队列要完成。然而,当所有 Task 优点都被引入框架时,他们借此机会引入线程本地队列(和 work stealing )以及现在更名为全局队列的队列。看起来这是允许对这些队列进行特定访问的清理工作。

关于c# - ThreadPool.QueueUserWorkItem preferLocal 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52756327/

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