Saya membaca http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html dan beberapa masalah keamanan untaian masih belum jelas bagi saya:
- Standar menjamin bahwa penghitungan referensi ditangani dengan thread safe dan platform independen, bukan?
- Masalah serupa - jaminan standar bahwa hanya satu utas (memegang referensi terakhir) yang akan memanggil hapus pada objek bersama, bukan?
- shared_ptr tidak menjamin keamanan utas untuk objek yang disimpan di dalamnya?
EDIT:
Kode semu:
// 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));
Memanggil reset () di thread IV akan menghapus instance sebelumnya dari kelas A yang dibuat di thread pertama dan menggantinya dengan instance baru? Selain itu setelah memanggil reset () di thread IV, thread lain hanya akan melihat objek yang baru dibuat?
make_shared
bukannyanew