2013-07-04 22 views
5

Hãy nói rằng tôi có khai báo như sau:Các chủ đề khác có thể sửa đổi bộ nhớ cục bộ không?

thread_local std::atomic<void*> local_var; 

đang thay đổi của local_var từ chủ đề khác cho phép? Tức là, nếu tôi giao tiếp địa chỉ của số local_var cho một chủ đề khác, sẽ không sửa đổi local_var từ đó triệu hồi ma quỷ mũi?

+0

"Chủ đề địa phương" có nghĩa là gì nếu chúng là? –

+0

Đó sẽ là baaaaaaaad. –

+0

@TonyHopkinson Tại sao? Tôi sẽ, tất nhiên, chăm sóc các vấn đề suốt đời. Địa chỉ của biến thread-local không thay đổi khi nó được cấp phát, do đó về cơ bản tôi có thể truyền địa chỉ đó đến một luồng khác và sửa đổi biến từ đó với sự đồng bộ hóa thích hợp. –

Trả lời

9

Có, nó được phép sửa đổi các biến thread-local của một chuỗi khác.

Điều thread_local có nghĩa là đối với biến là tên đề cập đến một đối tượng khác trong mỗi chuỗi, nhưng điều đó không có nghĩa là đối tượng ở chế độ riêng tư. Nếu bạn tạo biến được biết bởi một cái gì đó khác với tên của nó, tức là địa chỉ của nó, thì các chủ đề khác có thể truy cập nó.