คำถามติดแท็ก as-if

3
กฎ“ as-if” คืออะไร?
ตามชื่อเรื่องว่า กฎ "as-if" คืออะไร? คำตอบทั่วไปที่เราจะได้รับคือ: กฎที่อนุญาตให้มีการแปลงรหัสใด ๆ และทั้งหมดที่ไม่เปลี่ยนแปลงพฤติกรรมที่สังเกตได้ของโปรแกรม ในบางครั้งเรามักจะได้รับพฤติกรรมจากการใช้งานบางอย่างซึ่งเป็นผลมาจากกฎนี้ ผิดหลายครั้ง. แล้วกฎนี้คืออะไรกันแน่ มาตรฐานไม่ได้กล่าวถึงกฎนี้อย่างชัดเจนว่าเป็นส่วนหรือย่อหน้าดังนั้นอะไรที่อยู่ภายใต้ขอบเขตของกฎนี้? สำหรับฉันแล้วดูเหมือนว่าเป็นพื้นที่สีเทาซึ่งไม่ได้กำหนดรายละเอียดโดยมาตรฐาน ใครสามารถอธิบายรายละเอียดที่อ้างถึงการอ้างอิงจากมาตรฐานได้อย่างละเอียด? หมายเหตุ: แท็กสิ่งนี้เป็น C และ C ++ ทั้งคู่เนื่องจากเกี่ยวข้องกับทั้งสองภาษา
90 c++  c  optimization  c++-faq  as-if 

4
คำอธิบายของการสั่งซื้อที่ผ่อนคลายผิดพลาดใน cppreference หรือไม่?
ในเอกสารประกอบของstd::memory_orderบน cppreference.comมีตัวอย่างของการสั่งซื้อแบบผ่อนคลาย: สั่งผ่อนคลาย การดำเนินการของอะตอมมิกที่ติดแท็กmemory_order_relaxedไม่ใช่การดำเนินการทำข้อมูลให้ตรงกัน พวกเขาไม่ได้กำหนดลำดับการเข้าถึงหน่วยความจำพร้อมกัน พวกเขารับประกันเฉพาะอะตอมมิกและความสอดคล้องของคำสั่งแก้ไข ตัวอย่างเช่นเมื่อ x และ y เริ่มต้นที่ศูนย์ // Thread 1: r1 = y.load(std::memory_order_relaxed); // A x.store(r1, std::memory_order_relaxed); // B // Thread 2: r2 = x.load(std::memory_order_relaxed); // C y.store(42, std::memory_order_relaxed); // D ได้รับอนุญาตให้สร้าง r1 == r2 == 42 เพราะถึงแม้ว่า A จะถูกจัดลำดับก่อนหน้า B ภายในเธรด 1 และ C ถูกเรียงตามลำดับก่อนหน้า …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.