(Post 27/11/2007) Mỗi ​​luồng nhận được một kho dữ liệu cách ly với tất cả các luồng khác. Điều này hữu ích để lưu trữ dữ liệu “ngoài băng tần” – hỗ trợ cơ sở hạ tầng của đường dẫn thực thi, chẳng hạn như mã thông báo nhắn tin, giao dịch hoặc bảo mật. Truyền dữ liệu như vậy thông qua các tham số phương thức sẽ cực kỳ vụng về và sẽ xa lánh tất cả, trừ các phương thức của riêng bạn; lưu trữ thông tin như vậy trong các trường tĩnh có nghĩa là chia sẻ nó giữa tất cả các luồng.

  • Phần 1: Tổng quan và khái niệm
  • Phần 2: Tạo và bắt đầu chủ đề
  • Phần 3: Cơ bản về đồng bộ hóa
  • Phần 4: Khóa và an toàn chỉ
  • Phần 5: Ngắt và hủy bỏ
  • Phần 6: Trạng thái luồng
  • Phần 7: Xử lý Chờ
  • Phần 8: Bối cảnh đồng bộ hóa
  • Phần 9: Căn hộ và Hình thức Windows
  • Phần 10: BackgroundWorker
  • Phần 11: ReaderWriterLock
  • Phần 12: Tổng hợp luồng
  • Phần 13: Đại biểu không đồng bộ
  • Phần 14: Bộ hẹn giờ

Thread.GetData đọc từ kho dữ liệu cô lập của một luồng; Thread.SetData ghi vào nó. Cả hai phương pháp đều yêu cầu một đối tượng LocalDataStoreSlot để xác định vị trí – đây chỉ là một trình bao bọc cho một chuỗi đặt tên cho vị trí – cùng một chuỗi có thể được sử dụng trên tất cả các luồng và chúng sẽ vẫn nhận được các giá trị riêng biệt. Đây là một ví dụ:

class … {
// Có thể sử dụng cùng một đối tượng LocalDataStoreSlot trên tất cả các luồng.
LocalDataStoreSlot secSlot = Thread.GetNamedDataSlot (“securityLevel”);

// Thuộc tính này có một giá trị riêng biệt trên mỗi luồng.
int SecurityLevel {
get {
object data = Thread.GetData (secSlot);
trả về dữ liệu == null? 0: (int) dữ liệu; // null == uninitialized
}
set {
Thread.SetData (secSlot, value);
}
}

Thread.FreeNamedDataSlot sẽ giải phóng một vùng dữ liệu nhất định trên tất cả các luồng – nhưng chỉ khi tất cả các đối tượng LocalDataStoreSlot cùng tên đã thoát ra khỏi phạm vi và được thu thập rác. Điều này đảm bảo các luồng không bị kéo ra khỏi khe dữ liệu – miễn là chúng giữ một tham chiếu đến đối tượng LocalDataStoreSlot thích hợp miễn là nó đang được sử dụng.

(Sưu tầm)

0981578920
icons8-exercise-96