Sei stato fortunato; Parallel.ForEach
per popolare un elenco non è thread-safe, si verificherà eventualmente problemi.
Secondo MSDN, List<T>
non è thread-safe:
I membri di istanza non sono garantiti come thread safe.
Una lista <T> può supportare più lettori contemporaneamente, a condizione che la raccolta non venga modificata. L'enumerazione tramite una raccolta è intrinsecamente non una procedura thread-safe. Nel raro caso in cui un'enumerazione contenda con uno o più accessi in scrittura, l'unico modo per garantire la sicurezza del thread consiste nel bloccare la raccolta durante l'intera enumerazione . Per consentire l'accesso alla raccolta da più thread per la lettura e la scrittura, è necessario implementare la propria sincronizzazione .
ConcurrentBag è ciò che è necessario utilizzare per questo, che è thread-safe per più lettori e scrittori.
fonte
2011-08-25 16:13:36
il numero di core/CPU La vostra macchina di sviluppo hanno? – ChaosPandion
Due processori. – abx78