คำถามติดแท็ก thread-local-storage

3
thread_local หมายถึงอะไรใน C ++ 11
ฉันสับสนกับคำอธิบายthread_localใน C ++ 11 ความเข้าใจของฉันคือแต่ละเธรดมีสำเนาเฉพาะของตัวแปรท้องถิ่นในฟังก์ชัน ตัวแปรส่วนกลาง / คงที่สามารถเข้าถึงได้โดยเธรดทั้งหมด (อาจซิงโครไนซ์การเข้าถึงโดยใช้การล็อก) และthread_localตัวแปรสามารถมองเห็นได้สำหรับเธรดทั้งหมด แต่สามารถแก้ไขได้โดยเธรดที่กำหนดไว้เท่านั้น? ถูกต้องหรือไม่

4
C ++ 11 ตัวแปร thread_local คงที่โดยอัตโนมัติหรือไม่
มีความแตกต่างระหว่างส่วนรหัสทั้งสองนี้หรือไม่: void f() { thread_local vector<int> V; V.clear(); ... // use V as a temporary variable } และ void f() { static thread_local vector<int> V; V.clear(); ... // use V as a temporary variable } Backstory: เดิมทีฉันมีเวกเตอร์ STATIC V (สำหรับการเก็บค่ากลางบางค่ามันจะถูกล้างทุกครั้งที่ฉันเข้าสู่ฟังก์ชัน) และโปรแกรมเธรดเดียว ฉันต้องการเปลี่ยนโปรแกรมให้เป็นโปรแกรมมัลติเธรดดังนั้นฉันต้องกำจัดตัวปรับคงที่นี้ออกไป ความคิดของฉันคือเปลี่ยนค่าคงที่ทั้งหมดให้เป็น thread_local และไม่ต้องกังวลกับสิ่งอื่นใด วิธีนี้สามารถย้อนกลับได้หรือไม่?

2
คอมไพเลอร์ของฉันเพิกเฉยต่อสมาชิกคลาส thread_local ที่ไม่ได้ใช้ของฉันหรือไม่
ฉันต้องการลงทะเบียนกระทู้ในชั้นเรียนของฉันดังนั้นฉันตัดสินใจที่จะเพิ่มการตรวจสอบสำหรับthread_localคุณสมบัติ: #include <iostream> #include <thread> class Foo { public: Foo() { std::cout << "Foo()" << std::endl; } ~Foo() { std::cout << "~Foo()" << std::endl; } }; class Bar { public: Bar() { std::cout << "Bar()" << std::endl; //foo; } ~Bar() { std::cout << "~Bar()" << std::endl; } private: static thread_local …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.