Bagikan melalui


<mutex>

Sertakan header <mutex> standar untuk menentukan kelas mutex, , timed_mutexrecursive_mutex, dan recursive_timed_mutex; templat lock_guard dan unique_lock; dan jenis dan fungsi pendukung yang menentukan wilayah kode pengecualian bersama.

Peringatan

Dimulai di Visual Studio 2015, jenis sinkronisasi Pustaka Standar C++ didasarkan pada primitif sinkronisasi Windows dan tidak lagi menggunakan ConcRT (kecuali ketika platform target adalah Windows XP). Jenis yang ditentukan di <mutex> tidak boleh digunakan dengan jenis atau fungsi ConcRT apa pun.

Persyaratan

Header: <mutex>

kumpulan nama XML: std

Keterangan

Catatan

Dalam kode yang dikompilasi dengan menggunakan /clr, header ini diblokir.

mutex Kelas dan recursive_mutex merupakan jenis mutex. Jenis mutex memiliki konstruktor default dan destruktor yang tidak melemparkan pengecualian. Objek ini memiliki metode yang memberikan pengecualian bersama ketika beberapa utas mencoba mengunci objek yang sama. Secara khusus, jenis mutex berisi metode lock, , try_lockdan unlock:

  • Metode ini lock memblokir utas panggilan sampai utas mendapatkan kepemilikan mutex. Nilai pengembaliannya diabaikan.

  • Metode ini try_lock mencoba mendapatkan kepemilikan mutex tanpa memblokir. Jenis pengembaliannya dapat dikonversi ke bool dan adalah true jika metode mendapatkan kepemilikan, tetapi sebaliknya false.

  • Metode ini unlock merilis kepemilikan mutex dari utas panggilan.

Anda dapat menggunakan jenis mutex sebagai argumen jenis untuk membuat instans lock_guard templat dan unique_lock. Anda dapat menggunakan objek jenis ini sebagai Lock argumen ke fungsi anggota tunggu dalam templat condition_variable_any.

Jenis mutex berwak waktu memenuhi persyaratan untuk jenis mutex. Selain itu, ia memiliki try_lock_for metode dan try_lock_until yang harus dapat dipanggil dengan menggunakan satu argumen dan harus mengembalikan jenis yang dapat dikonversi ke bool. Jenis mutex berwak waktu dapat menentukan fungsi-fungsi ini dengan menggunakan argumen tambahan, asalkan argumen tambahan tersebut semuanya memiliki nilai default.

  • Metode try_lock_for harus dapat dipanggil dengan menggunakan satu argumen, Rel_time, yang jenisnya adalah instansiasi dari chrono::duration. Metode ini mencoba untuk mendapatkan kepemilikan mutex, tetapi kembali dalam waktu yang ditentukan oleh Rel_time, terlepas dari keberhasilan. Nilai pengembalian dikonversi ke true jika metode mendapatkan kepemilikan; jika tidak, nilai yang dikembalikan dikonversi ke false.

  • Metode try_lock_until harus dapat dipanggil dengan menggunakan satu argumen, Abs_time, yang jenisnya adalah instansiasi dari chrono::time_point. Metode ini mencoba untuk mendapatkan kepemilikan mutex, tetapi mengembalikan tidak lebih dari waktu yang ditetapkan oleh Abs_time, terlepas dari keberhasilan. Nilai pengembalian dikonversi ke true jika metode mendapatkan kepemilikan; jika tidak, nilai yang dikembalikan dikonversi ke false.

Jenis mutex juga dikenal sebagai jenis yang dapat dikunci. Jika tidak menyediakan fungsi try_lockanggota , ini adalah jenis dasar yang dapat dikunci. Jenis mutex berwak waktu dikenal sebagai jenis yang dapat dikunci berwak waktu. Jenis yang dapat dikunci berwaktu memblokir untuk jumlah waktu tertentu, atau sampai kunci pada mutex diperoleh.

Anggota

Kelas

Nama Deskripsi
lock_guard Kelas Mewakili templat yang dapat diinstansiasi untuk membuat objek yang destruktornya membuka kunci mutex.
mutex Kelas (Pustaka Standar C++) Mewakili jenis mutex. Gunakan objek jenis ini untuk memberlakukan pengecualian bersama dalam suatu program.
recursive_mutex Kelas Mewakili jenis mutex. Berbeda dengan mutex kelas, perilaku memanggil metode penguncian untuk objek yang sudah dikunci ditentukan dengan baik.
recursive_timed_mutex Kelas Gunakan objek jenis ini untuk memberlakukan pengecualian bersama yang memiliki pemblokiran terbatas waktu dalam program. Tidak seperti timed_mutex, efek memanggil metode penguncian untuk recursive_timed_mutex objek didefinisikan dengan baik.
scoped_lock Kelas
timed_mutex Kelas Gunakan objek jenis ini untuk memberlakukan pengecualian bersama yang memiliki pemblokiran terbatas waktu dalam program.
unique_lock Kelas Mewakili templat yang dapat diinstansiasi untuk membuat objek yang mengelola penguncian dan pembukaan kunci muteks.

Fungsi

Nama Deskripsi
call_once Menyediakan mekanisme untuk memanggil objek yang dapat dipanggil tertentu tepat sekali selama eksekusi.
lock Mencoba mengunci semua argumen tanpa kebuntuan.
swap Mencoba bertukar status internal dari dua mutex objek, x dan y.
try_lock Mencoba mengunci objek yang dapat dikunci. Segera kembali.

Structs

Nama Deskripsi
adopt_lock_t Struktur Mewakili jenis yang digunakan untuk menentukan adopt_lock.
defer_lock_t Struktur Mewakili jenis yang menentukan defer_lock objek yang digunakan untuk memilih salah satu konstruktor yang kelebihan beban .unique_lock
once_flag Struktur Mewakili yang digunakan dengan fungsi call_once templat untuk memastikan bahwa kode inisialisasi struct hanya dipanggil sekali, bahkan di hadapan beberapa utas eksekusi.
try_to_lock_t Struktur struct Mewakili yang mendefinisikan try_to_lock objek dan digunakan untuk memilih salah satu konstruktor yang kelebihan beban .unique_lock

Variabel

Nama Deskripsi
adopt_lock Mewakili objek yang dapat diteruskan ke konstruktor untuk lock_guard dan unique_lock untuk menunjukkan bahwa mutex objek yang juga diteruskan ke konstruktor dikunci.
defer_lock Mewakili objek yang dapat diteruskan ke konstruktor untuk unique_lock, untuk menunjukkan bahwa konstruktor tidak boleh mengunci mutex objek yang juga diteruskan ke objek tersebut.
try_to_lock Mewakili objek yang dapat diteruskan ke konstruktor untuk unique_lock menunjukkan bahwa konstruktor harus mencoba membuka kunci mutex objek yang juga diteruskan ke objek tersebut tanpa memblokir.

Lihat juga

Referensi File Header