Ho difficoltà a comprendere loopState.Stop()
e loopState.Break()
. Ho letto MSDN e diversi post su di esso, ma sono ancora confuso.Stop vs Break in Parallel.Per
Quello che ho capito è che ogni partizionatore di iterazione fornisce gli indici rimanenti per i thread da elaborare e loopState.Stop()
interrompe tutti i thread e loopState.Break()
interrompe il thread corrente.
lascia tuttavia considerare seguente situazione:
Parallel.For(0, 100, (i, loopState) =>
{
if (i >= 10)
loopState.Break();
Debug.Write(i);
});
per questo ciclo ho risultato vuoto sanitario:
0 25 1 2 3 4 5 6 7 8 9 10
Non ho idea del perché nel risultato v'è 10 e 25 numeri.
Chiunque può aiutare?
P.S. Ho CPU i5 520M (2 core => 4 thread)
Quindi loopState.Break() chiude tutti i thread? Uso ciò che loopState.Stop() fa. –
Per chiarire il mio commento precedente: ora capisco come si fermino i primi due cicli, ma perché gli altri due thread non iniziano nemmeno? Break è in grado di terminare più di un thread? Se sì, come funziona? –
Vedi per una buona risposta su Stop vs Break: http://stackoverflow.com/questions/8818203/what-is-difference-between-loopstate-break-loopstate-stop-and-cancellationt –