更好地控制线程何时在 AsParallel 中启动
Getting better control on when thread starts in AsParallel
下面的代码将在单独的线程中运行 ChanceOfWinningMillionDollarJackpot,这非常酷。然而,这些线程会立即开始工作,而对于常规的 C# Thread 类,您可以使用 Thread.Start 方法控制工作何时开始。无论如何,在使用 AsParallel 设置并行查询时我可以获得相同的控制吗?
static void Main(string[] args)
{
Task<double>[] e = Enumerable.Range(1, 10).AsParallel().Select(n => ChanceOfWinningMillionDollarJackpot(n)).ToArray();
}
private static Task<double> ChanceOfWinningMillionDollarJackpot(int n)
{
//whatever
}
您需要 return 列表作为 IEnumerable。然后,只有当您查询可枚举时,代码才会真正执行。
var enumerable = Enumerable.Range(1, 10).AsParallel()
.Select(n => ChanceOfWinningMillionDollarJackpot(n)).AsEnumerable();
var list = enumerable.ToList();
下面的代码将在单独的线程中运行 ChanceOfWinningMillionDollarJackpot,这非常酷。然而,这些线程会立即开始工作,而对于常规的 C# Thread 类,您可以使用 Thread.Start 方法控制工作何时开始。无论如何,在使用 AsParallel 设置并行查询时我可以获得相同的控制吗?
static void Main(string[] args)
{
Task<double>[] e = Enumerable.Range(1, 10).AsParallel().Select(n => ChanceOfWinningMillionDollarJackpot(n)).ToArray();
}
private static Task<double> ChanceOfWinningMillionDollarJackpot(int n)
{
//whatever
}
您需要 return 列表作为 IEnumerable。然后,只有当您查询可枚举时,代码才会真正执行。
var enumerable = Enumerable.Range(1, 10).AsParallel()
.Select(n => ChanceOfWinningMillionDollarJackpot(n)).AsEnumerable();
var list = enumerable.ToList();