2011-08-04 26 views
12

Khi chuỗi chủ đề của luồng được thực hiện, các công cụ như Tên hoặc chuỗi dữ liệu cục bộ có được đặt lại không? Vì vậy, khi các chủ đề đi ra khỏi hồ bơi thời gian tới, nó giống như thương hiệu mới?Chủ đề .NET ThreadPool có được đặt lại khi nó quay trở lại nhóm không?

Có tài liệu "chính thức" về khía cạnh này của luồng ThreadPool không?

+1

có thể trùng lặp của [Sử dụng tiện ích mở rộng song song với thuộc tính ThreadStatic. Có thể nó bị rò rỉ bộ nhớ?] (Http://stackoverflow.com/questions/3029449/using-parallel-extensions-with-threadstatic-attribute-could-it-leak-memory) –

Trả lời

8

KHÔNG xóa bộ nhớ cục bộ của luồng khi được giải phóng, đó là khía cạnh quan trọng nhất cần lưu ý.

http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx

Khi các hồ bơi thread reuses một chủ đề, nó không xóa các dữ liệu trong đề lưu trữ địa phương hoặc trong các lĩnh vực được đánh dấu với thuộc tính ThreadStaticAttribute. Do đó, dữ liệu được đặt trong luồng lưu trữ cục bộ theo một phương pháp có thể được hiển thị với bất kỳ phương thức nào khác được thực hiện bởi cùng một luồng chuỗi chủ đề. Một phương thức mà truy cập một trường được đánh dấu bằng thuộc tính ThreadStaticAttribute có thể gặp phải dữ liệu khác nhau tùy thuộc vào thread nào thread thực hiện nó.

Đây là một cái gì đó phải rất cẩn thận về ...

+0

Cảm ơn các liên kết đến msdn. Tất nhiên, khi tôi nhìn vào phiên bản 2.0 mà khối thông tin bị thiếu. –

3

Câu trả lời là không, câu trả lời sẽ không được đặt lại. Tuy nhiên bạn không nên dựa vào thực tế này bởi vì nó phụ thuộc vào nhóm luồng cho dù mục công việc tiếp theo của bạn sẽ được thực hiện trên luồng mới hay trên luồng được sử dụng lại. Vì vậy, bạn có thể hoặc không thể nhìn thấy bạn Thread lưu trữ cục bộ một lần nữa. Tôi sẽ không khuyên bạn nên sử dụng Thread Local Storage trên thread thread vì lý do này. Việc triển khai nhóm luồng là chi tiết nội bộ và có thể thay đổi.

Ẩn dụ thế giới thực sẽ là một chiếc xe buýt mà bạn đi làm hàng ngày. Cho phép nói rằng vì lý do nào đó bạn muốn để túi của bạn trên xe buýt vì bạn biết rằng nó sẽ không bị đánh cắp. Đây là một ý tưởng tồi bởi vì lần sau khi bạn lên xe buýt, bạn có thể không tìm thấy túi của bạn. Đơn giản vì nó có thể là một chiếc xe buýt khác. Bến xe buýt có thể xoay xe buýt giữa các tuyến hoặc có thể vứt bỏ xe buýt cũ. Cũng giống như hồ bơi chủ đề có thể sử dụng lại hoặc gỡ bỏ chủ đề mà không cho bạn biết.

Các vấn đề liên quan