Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Làm cho tập hợp an toàn luồng (thread-safe) trong C#

.NET Framework 4 mang đến namespace System.Collections.Concurrent. Namespace này có một số lớp tập hợp an toàn luồng và có khả năng mở rộng. Các tập hợp này được gọi là tập hợp đồng thời vì chúng có thể được truy cập bởi nhiều luồng cùng lúc.

Các loại tập hợp đồng thời sau sử dụng cơ chế đồng bộ hóa nhẹ: SpinLock, SpinWait, v.v. Đây là mới trong .NET Framework 4.

Hãy xem các tập hợp đồng thời trong C#:

Loại Mô tả
BlockingCollection<T> Chức năng giới hạn và chặn cho bất kỳ kiểu nào.
ConcurrentDictionary<TKey,TValue> Triển khai an toàn luồng của từ điển cặp khóa-giá trị.
ConcurrentQueue<T> Triển khai an toàn luồng của hàng đợi FIFO (first-in, first-out).
ConcurrentStack<T> Triển khai an toàn luồng của ngăn xếp LIFO (last-in, first-out).
ConcurrentBag<T> Triển khai an toàn luồng của tập hợp các phần tử không có thứ tự.
IProducerConsumerCollection<T> Giao diện mà một kiểu phải triển khai để được sử dụng trong BlockingCollection.

Hãy xem cách làm việc với ConcurrentStack<T> - một tập hợp LIFO an toàn luồng:

ConcurrentStack<int> cs = new ConcurrentStack<int>(); 
cs.Push(95); 
cs.Push(120); 
cs.Push(130);