Burada paralel olarak birden çok iş parçacığından erişilen bazı C++ kodu. Kritik bir kesiti vardır: Kilit değişkeninin sınıfı, POSIX mutex uygulamasının etrafındaki sarıcıdır. Modül işlemleri nedeniyle atomik işlemlerin kullanılması mümkün değildir.Kilitle yeniden sıralama bildirimi
O3 bayrağına sahip bir gcc derleyicinin kodu optimize etmesi, böylece current_id ataması kilitlenmeden önce mi hareket ettirilir?
Yani, "fonksiyonun saf olarak işaretlenmediği veya derleyicinin bunu yapmanın güvenli olduğunu belirleyemediği **." Son sonuç aynıysa, derleyici, güvenli olduğunu doğrulayamadığı sürece genel olarak bir optimizasyon yapmaz. – jalf
Eğer "current_id" ve "shared_id", geçerli kapsamdan kaçmayan yerel değişkenlerdir (adres). o zaman hiç kimseye verilmemiş, vs.) o zaman optimizatör, olası mutasyonu göz ardı ederek dış fonksiyon çağrılarından bu satırı yeniden sıralayabilirdi.Ayrıca, buradaki durumun bu olmadığını farzediyorum: – ephemient
@ephemient: eğer yerel ve hayır ise dışardan biri, harici bir fonksiyon çağrısının onları nasıl değiştirdiğini bilir? – Kosi2801