C++ Standart Kitaplığında İş Parçacığı Güvenliği

Aşağıdaki iş parçacığı güvenliği kuralları, aşağıda açıklandığı gibi C++ Standart Kitaplığı'ndaki shared_ptrtüm sınıflar için geçerlidir. Daha güçlü garantiler bazen sağlanır; örneğin, aşağıda açıklandığı gibi standart iostream nesneleri ve içindekiler <atomic>gibi çok iş parçacığı kullanımına yönelik türler.

Nesne, birden çok iş parçacığından okuma için iş parçacığı açısından güvenlidir. Örneğin, A nesnesi verildiğinde, A'yı iş parçacığı 1'den ve iş parçacığı 2'den aynı anda okumak güvenlidir.

Bir nesneye bir iş parçacığı tarafından yazılıyorsa, aynı veya diğer iş parçacıklarındaki tüm okuma ve yazma işlemleri korunmalıdır. Örneğin, A nesnesi verildiğinde, 1. iş parçacığı A'ya yazıyorsa, 2. iş parçacığının A'dan okuması veya A'ya yazması engellenmelidir.

Başka bir iş parçacığı aynı türde farklı bir örneği okuyor veya yazıyor olsa bile, bir türün bir örneğini okumak ve yazmak güvenlidir. Örneğin, aynı türdeki A ve B nesneleri verildiğinde, A iş parçacığı 1'de yazılırken ve B iş parçacığı 2'de okunurken güvenlidir.

shared_ptr

Birden çok iş parçacığı, sahipliği paylaşan kopyalar olsa bile farklı shared_ptr nesneleri aynı anda okuyabilir ve yazabilir.

iostream

Standart iostream nesneleri , , , , , wcin, , wcout, ve wclog wcerrdiğer sınıflarla aynı kuralları izler; bu özel durumla birlikte: birden çok iş parçacığından bir nesneye yazmak güvenlidir. clogcerrcoutcin Örneğin, iş parçacığı 1, iş parçacığı 2 ile aynı anda öğesine cout yazabilir. Ancak bu, iki iş parçacığından gelen çıkışın birbirine karışmasına neden olabilir.

Not

Akış arabelleğinden okuma, okuma işlemi olarak kabul edilmez. Bunun yerine, sınıfın durumu değiştirildiğinden yazma işlemi olarak kabul edilir.

Ayrıca bkz.

C++ Standart Kitaplığına Genel Bakış