Giriş
Atomic işlemler 3 başlık altında toplanabilir.
Acquire Release Ordering
Atomic işlemler 3 başlık altında toplanabilir.
- sequentially-consistent ordering (memory_order_seq_cst),
- relaxed ordering (memory_order_relaxed).
- acquire-release ordering (memory_order_consume, memory_order_acquire, memory_order_release, and memory_order_acq_rel),
Anlaması en kolay model bu. Tüm thread'ler atomic bir işlemi tek bir thread yapmış gibi görür. Sıra bozulmaz.
Relaxed Ordering
Bu modelde, bir adamın elinde liste olsa ve listeden yeni bir elemen istesek ya yeni bir eleman ya da az evvel verdiği aynı elemanı verir. Açıklamayı OpenMP'den aldım ancak hemen hemen aynı şeyi açıklıyor.
...threads have access to a place to store and to retrieve variables, called the memory. In addition, each thread is allowed to have its own temporary view of the memory. ... The temporary view of memory allows the thread to cache variables and thereby to avoid going to memory for every reference to a variable.
Açıklaması şöyle
“Relaxed” atomic operations are not synchronization operations even though, like synchronization operations, they cannot contribute to data races.
Acquire Release Ordering
Hiç yorum yok:
Yorum Gönder