Keamanan utas di Pustaka Standar C++

Aturan keamanan utas berikut berlaku untuk semua kelas di Pustaka Standar C++—ini termasuk shared_ptr, seperti yang dijelaskan di bawah ini. Jaminan yang lebih kuat terkadang disediakan—misalnya, objek iostream standar, seperti yang dijelaskan di bawah ini, dan jenis yang ditujukan untuk multithreading, seperti yang ada di <atomic>.

Objek aman untuk dibaca dari beberapa utas. Misalnya, diberi objek A, aman untuk membaca A dari utas 1 dan dari utas 2 secara bersamaan.

Jika objek ditulis oleh satu utas, maka semua membaca dan menulis ke objek tersebut pada utas yang sama atau lainnya harus dilindungi. Misalnya, diberi objek A, jika utas 1 ditulis ke A, maka utas 2 harus dicegah membaca atau menulis ke A.

Aman untuk membaca dan menulis ke satu instans jenis bahkan jika utas lain membaca atau menulis ke instans yang berbeda dari jenis yang sama. Misalnya, objek yang diberikan A dan B dengan jenis yang sama, aman ketika A ditulis dalam utas 1 dan B sedang dibaca di utas 2.

shared_ptr

Beberapa utas dapat membaca dan menulis objek yang berbeda shared_ptr secara bersamaan, bahkan ketika objek adalah salinan yang berbagi kepemilikan.

iostream

Objek ciniostream standar , , cout, cerr, clogwcin, wcout, wcerrdan wclog mengikuti aturan yang sama dengan kelas lain, dengan pengecualian ini: aman untuk menulis ke objek dari beberapa utas. Misalnya, utas 1 dapat menulis pada cout saat yang sama dengan utas 2. Namun, ini dapat menyebabkan output dari dua utas diintermiks.

Catatan

Membaca dari buffer aliran tidak dianggap sebagai operasi baca. Sebaliknya dianggap sebagai operasi tulis karena status kelas diubah.

Baca juga

Gambaran Umum Pustaka Standar C++