CodeBlanks Logo Icon CodeBlanks

Sequential consistency

sequential consistency ve diğer memory order'ları öğrenirsin.

Sequential consistency

Sequential consistency (seq_cst), C++'taki en güçlü bellek sırasıdır ve std::atomic işlemlerinin varsayılanıdır. Tüm iş parçacıkları tüm işlemleri tek bir tutarlı sırada görür.

Örnek: x.store(1) varsayılan olarak std::memory_order_seq_cst kullanır. Bu güçlü garanti performans maliyeti taşır; ama programın davranışı en kolay anlaşılanıdır. Yüksek gecikme veya çok çekirdekli sistemlerde daha zayıf sıralar tercih edilebilir.

Total sıra

seq_cst işlemleri tüm iş parçacıkları için tek bir total sıra oluşturur. Yani her iş parçacığı aynı sırayı görür; çelişkili gözlemler olmaz. Bu, programı düşünmeyi kolaylaştırır.

Bunun bedeni performanstır: işlemci, önceki tüm yazmaların görünür olmasını beklemek zorundadır. Bu yüzden yalnızca doğru olmaya yettiği yerde daha zayıf sıralar (release-acquire veya relaxed) kullanılır. Yanlış kullanım yarışa veya tutarsız sonuca yol açabilir.

Uygulama seq_cst ile atomik yaz

Global std::atomic<int> x{0}; tanımla. main içinde x.store(5); (varsayılan seq_cst) ve std::cout << x.load(); yaz.

Başlangıç kodu

main.cpp
#include <iostream>
#include <atomic>

// x atomiğini buraya tanımla

int main() {
    // x'e değer ata ve yükle
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <atomic>

std::atomic<int> x{0};

int main() {
    x.store(5);
    std::cout << x.load();
    return 0;
}

Beklenen çıktı

5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Sıralamayı gücüne eşle

Kavram Anlamı
memory_order_seq_cst Varsayılan, en güçlü
memory_order_relaxed En zayıf
memory_order_acquire Okuma tarafı
memory_order_release Yazma tarafı

2 seq_cst store'u tamamla

Soru
x.store(1, std::memory_order_____);
Cevap
x.store(1, std::memory_order_seq_cst);

Açıklama: seq_cst varsayılan ve en güçlü sıradır.

3 std::atomic işlemlerinin varsayılan bellek sırası nedir?

main.cpp
x.store(1);  // varsayılan
  • memory_order_acquire
  • memory_order_relaxed
  • memory_order_seq_cst Doğru cevap
  • memory_order_release

Açıklama: seq_cst varsayılan sıradır; en güçlü garantiyi verir.

Uzman bölümündeki tüm dersler