连续的.NET并行';s-在每个
我有几个平行的。连续操作 我目前正在检查每个Parallel.For的返回值连续的.NET并行';s-在每个,.net,parallel-processing,.net,Parallel Processing,我有几个平行的。连续操作 我目前正在检查每个Parallel.For的返回值ParallelLoopResult,并休眠20毫秒,直到IsCompleted成员设置为true Dim plr as ParallelLoopResult plr = Parallel.For(...) while not plr.IsCompleted Thread.Sleep(20) end while plr = Parallel.For(...) while not plr.IsComplet
ParallelLoopResult
,并休眠20毫秒,直到IsCompleted
成员设置为true
Dim plr as ParallelLoopResult
plr = Parallel.For(...)
while not plr.IsCompleted
Thread.Sleep(20)
end while
plr = Parallel.For(...)
while not plr.IsCompleted
Thread.Sleep(20)
end while
.
.
.
如何添加内核级块(即WaitHandle)来代替循环和Thread.Sleep?是否存在与触发器并行的完成事件?Parallel.For是否提供了这样一种机制?Parallel.For将完成所有调用的代码。
IsCompleted
仅返回false
,然后循环被中断
发件人:
如果IsCompleted返回true,则循环运行到完成,从而执行循环的所有迭代。如果IsCompleted返回false,LowestBreakIteration返回null,则调用Stop来提前结束循环。如果IsCompleted返回false,LowestBreakIteration返回非null整数值,则使用Break提前结束循环
对于
Parallel.for()
,您无法获得WaitHandle
,并且您不需要-调用是同步的(所有迭代将在调用完成后完成)。如果需要在其他线程上执行循环本身,而不仅仅是迭代,则必须将其包装在Task
或thread
中,并且该对象将为您提供等待句柄。但是,如果您要在调用Parallel.for()
(与示例代码中一样)的同一线程上等待结果,则没有任何意义。True,但没有回答我的问题,即如何使用内核级构造等待循环完成。但是,没有什么可等待的。它认为,你要问的是,如何使线程休眠,直到一些甚至是IsCompleted
的信号被更改。问题是IsCompleted
在Parallel.For
完成后将永远不会更改。如果我创建了一个WaitHandle,当Parallel.For完成时,我如何向该等待句柄发送信号?在所有任务完成之前,AFAIK a Parallel.For不会阻塞。我需要阻塞直到循环完成,最好使用内核级的mechansim。Parallel.For
将始终在返回之前完成。我想你要找的是Task.Factory.StartNew()
。