
并行编程基础
|
53
void
ProcessArray(
double
[] array)
{
Parallel.Invoke(
() => ProcessPartialArray(array, 0, array.Length / 2),
() => ProcessPartialArray(array, array.Length / 2, array.Length)
);
}
void
ProcessPartialArray(
double
[] array,
int
begin,
int
end)
{
//
CPU
密集型处理……
}
如果直至运行时,调用数量尚不明确,那么也可以将委托数组传递给
Parallel.Invoke
方法:
void
DoAction20Times(Action action)
{
Action[] actions = Enumerable.Repeat(action, 20).ToArray();
Parallel.Invoke(actions);
}
和
Parallel
类中的其他方法一样,
Parallel.Invoke
也支持取消。
void
DoAction20Times(Action action, CancellationToken token)
{
Action[] actions = Enumerable.Repeat(action, 20).ToArray();
Parallel.Invoke(
new
ParallelOptions ...