Okuduğum http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html ve bazı iş parçacığı güvenlik sorunları hala benim için açık değildir:
- Standart, referans sayımının iş parçacığı açısından güvenli olduğunu ve platformdan bağımsız olduğunu garanti eder, değil mi?
- Benzer sorun - standart, yalnızca bir iş parçacığının (son referansı tutan) paylaşılan nesnede silme çağrısı yapacağını garanti eder, değil mi?
- shared_ptr, içinde depolanan nesne için herhangi bir iş parçacığı güvenliğini garanti etmez mi?
DÜZENLE:
Sözde kod:
// Thread I
shared_ptr<A> a (new A (1));
// Thread II
shared_ptr<A> b (a);
// Thread III
shared_ptr<A> c (a);
// Thread IV
shared_ptr<A> d (a);
d.reset (new A (10));
İş parçacığı IV'teki reset () çağrısı, ilk iş parçacığında oluşturulan A sınıfının önceki örneğini silecek ve onu yeni örnekle değiştirecek mi? Ayrıca IV iş parçacığında reset () çağrıldıktan sonra diğer evreler sadece yeni oluşturulan nesneyi görecekler mi?
make_shared
yerine kullanmalısınıznew