关于APL中有关AsyncLocal的线程切换,跳变和线程重用

时间:2019-11-09 14:48:33

标签: .net async-await task-parallel-library executioncontext

在TPL中使用async / await时,它将重用空闲线程,并且理论上会在其他线程上调用回调,而不是最初使用的回调吗?

在这种情况下,关于AsyncLocal,它会传递其值以匹配流吗?还是我可能会从另一个重用线程中得到一个值?

1 个答案:

答案 0 :(得分:2)

除非有SynchronizationContext,否则Async-await将从线程池中选择一个随机线程,这可以迫使TPL在同一线程上继续运行。

AsyncLocal的想法是在线程之间保留一个值。特定于线程的是ThreadLocal