Share via


在標準 C++ 程式庫中的執行緒安全

下列的執行緒安全規則套用到標準的 C++ 程式庫 (除了 shared_ptr 和 iostream 類別,如下所述) 中的所有類別。

單一物件是執行緒安全瀏覽來自多個執行緒。 例如,給定物件 a,則從 1 的執行緒和執行緒 2 同時讀取 A。

如果正在寫入單一物件,由一個執行緒,然後所有讀取及寫入該物件在相同或其他執行緒都必須加以保護。 比方說,如果執行緒 1 正在寫入到 a,請提供物件 a,然後執行緒 2 要避免讀取或寫入到 a。

很安全地讀取及寫入型別的某個執行個體,即使另一個執行緒會讀取或寫入相同的型別不同的執行個體。 例如,給定物件 a 和 b 的型別相同,則若在執行緒 1 正在寫入 a 及 b 在執行緒 2 正在讀取。

shared_ptr

多個執行緒可以同時讀取和寫入不同 shared_ptr 物件,即使這些物件是共用擁有權的複本。

iostream 類別

Iostream 類別,請遵循與其他類別,有一個例外狀況相同的規則。 則將寫入從多個執行緒的物件。 例如,可以寫入執行緒 1 cout在同一時間中,正如執行緒 2。 不過,這會導致兩個執行緒正在混用的輸出。

注意事項注意事項

從資料流緩衝區的讀取是不被視為讀取的作業。它應該被視為寫入作業,因為這將會變更類別的狀態。

請參閱

參考

標準 C++ 程式庫概觀