In belgelenmesi std::memory_order
cppreference.com üzerinde rahat sipariş örneği vardır:
Rahat sipariş
Etiketlenen atomik işlemler
memory_order_relaxed
senkronizasyon işlemleri değildir; eşzamanlı bellek erişimleri arasında emir vermezler. Sadece atomisite ve modifikasyon sırası tutarlılığını garanti ederler.Örneğin, başlangıçta x ve y ile sıfır,
// 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
Bir rağmen, çünkü r1 == r2 == 42 üretmek için bırakılır daha önce dizilenmiştir Konu 1 içinde B ve C olup önce dizilenmiş iplik 2 içinde D, hiçbir şey önler y modifikasyonu için A daha önce görünmesini D ve B'den x modifikasyon sırasında C'den önce görünür. D'nin y üzerindeki yan etkisi, 1 numaralı iplikteki A yükü tarafından görülebilirken, B üzerindeki x'in yan etkisi, 2 numaralı iplikteki C yükü tarafından görülebilir. Özellikle, D'nin C girişinden önce tamamlanması durumunda bu meydana gelebilir. iş parçacığı 2, derleyici yeniden sıralama nedeniyle veya çalışma zamanında.
"C, iplik 2 içinde D'den önce dizilir" der.
Bulunabilir dizilenmiştir daha önce tanımı göre değerlendirme Düzeni B değerlendirilmesi başlamadan önce bir B önce sekanslanır ise, A daha sonra değerlendirme tamamlanacaktır. C, evre 2 içinde D'den önce sıralandığından, C, D başlamadan önce tamamlanmalıdır, bu nedenle anlık görüntünün son cümlesinin koşul kısmı hiçbir zaman karşılanmaz.