ฉันต้องการทำอย่างนี้:
กระทู้เริ่มต้น:
- เขียนค่าบางอย่างไปยัง vars ส่วนกลาง (จะไม่ถูกเขียนอีกครั้ง)
- นี่อาจเป็นข้อมูลขนาดใหญ่พอสมควร (อาร์เรย์สตริง ฯลฯ ) สามารถไม่เพียง
std::atomic<>
แต่จะทำ
- นี่อาจเป็นข้อมูลขนาดใหญ่พอสมควร (อาร์เรย์สตริง ฯลฯ ) สามารถไม่เพียง
- วางไข่หัวข้ออื่น ๆ
หัวข้ออื่น ๆ :
- อ่านสถานะโลก
- ทำงาน ฯลฯ
ตอนนี้ฉันรู้ว่าฉันสามารถส่งผ่านข้อโต้แย้งไปstd::thread
ได้ แต่ฉันพยายามเข้าใจการรับประกันหน่วยความจำของ C ++ ผ่านตัวอย่างนี้
นอกจากนี้ฉันค่อนข้างมั่นใจว่าในการใช้งานจริงใด ๆ การสร้างเธรดจะทำให้สิ่งกีดขวางหน่วยความจำทำให้มั่นใจว่าเธรดสามารถ "เห็น" ทุกสิ่งที่เธรดเธรดเขียนขึ้นจนถึงจุดนั้น
แต่คำถามของฉันคือ: สิ่งนี้รับประกันโดยมาตรฐานหรือไม่
นอกเหนือ: ฉันคิดว่าฉันสามารถเพิ่มหุ่นบางตัวstd::atomic<int>
หรือมากกว่านั้นและเขียนลงในนั้นก่อนที่จะเริ่มหัวข้ออื่น ๆ จากนั้นในหัวข้ออื่น ๆ อ่านครั้งเดียวเมื่อเริ่มต้น ฉันเชื่อว่าสิ่งที่เกิดขึ้นก่อนที่เครื่องจักรจะรับประกันได้ว่ารัฐทั่วโลกที่เขียนไว้ก่อนหน้านี้จะมองเห็นได้อย่างถูกต้อง
แต่คำถามของฉันคือถ้าสิ่งที่ต้องการในเชิงเทคนิคหรือการสร้างเธรดเพียงพอหรือไม่
std::atomic<int>
...std::atomic_thread_fence
คุณสามารถใช้