Bạn đã may mắn; Parallel.ForEach
để điền một Danh sách không an toàn cho luồng, cuối cùng bạn sẽ gặp sự cố.
Theo MSDN, List<T>
không phải là thread an toàn:
Bất kỳ thành viên dụ không đảm bảo được đề an toàn.
Danh sách <T> có thể hỗ trợ đồng thời nhiều độc giả, miễn là bộ sưu tập không bị sửa đổi. Liệt kê thông qua bộ sưu tập là về bản chất không phải là quy trình an toàn chỉ. Trong trường hợp hiếm hoi khi một điều tra cạnh tranh với một hoặc nhiều lần truy cập viết, cách duy nhất để đảm bảo an toàn luồng là khóa bộ sưu tập trong toàn bộ số đếm . Để cho phép bộ sưu tập được truy cập bằng nhiều chủ đề để đọc và viết, hãy thực hiện đồng bộ của riêng bạn.
ConcurrentBag là những gì bạn nên sử dụng vì điều này, an toàn cho nhiều người đọc và nhà văn.
Nguồn
2011-08-25 16:13:36
bao nhiêu lõi/CPU không máy phát triển của bạn có? – ChaosPandion
Hai bộ xử lý. – abx78