gpt4 book ai didi

c# - List.AsParallel() - 如何命名我的线程?

转载 作者:太空宇宙 更新时间:2023-11-03 22:15:54 24 4
gpt4 key购买 nike

我用

List.AsParallel().WithDegreeOfParallelism(3).ForAll(x => Worker(x));

在列表的每个元素上应用 Worker。

我如何命名运行 Worker 的线程,以便当每个 Worker(x) 线程终止时,VS 调试器告诉我:Thread <<for elem abcde>> terminated ,以便我可以区分线程?

我需要这个,因为程序会在一段时间后停止执行列表中的元素,并且线程会终止。

最佳答案

我正在使用 Thread.CurrentThread.ManagedThreadId 来查看正在重用哪个线程。这个想法在下面的测试中显示:

[Test]
public void ThreadNamesTest()
{
var rnd = new Random();
var range = Enumerable.Range(0, 50);

var rangeBack = new Dictionary<int, int>();
var rangeBackLocker = new object();

range.AsParallel().AsOrdered()
.WithDegreeOfParallelism(4).ForAll(x =>
{
lock (rangeBackLocker)
{
rangeBack.Add(x, Thread.CurrentThread.ManagedThreadId);
}
Thread.Sleep(100 * rnd.Next(10));
});

Assert.AreEqual(rangeBack.GroupBy(x=>x.Value).Count(), 4);
}

关于c# - List.AsParallel() - 如何命名我的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5210278/

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