Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
lockmemblokir utas panggilan sampai utas mendapatkan kepemilikan mutex. Nilai pengembaliannya diabaikan.Metode ini
try_lockmencoba mendapatkan kepemilikan mutex tanpa memblokir. Jenis pengembaliannya dapat dikonversi kebooldan adalahtruejika metode mendapatkan kepemilikan, tetapi sebaliknyafalse.Metode ini
unlockmerilis 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_forharus dapat dipanggil dengan menggunakan satu argumen,Rel_time, yang jenisnya adalah instansiasi darichrono::duration. Metode ini mencoba untuk mendapatkan kepemilikan mutex, tetapi kembali dalam waktu yang ditentukan olehRel_time, terlepas dari keberhasilan. Nilai pengembalian dikonversi ketruejika metode mendapatkan kepemilikan; jika tidak, nilai yang dikembalikan dikonversi kefalse.Metode
try_lock_untilharus dapat dipanggil dengan menggunakan satu argumen,Abs_time, yang jenisnya adalah instansiasi darichrono::time_point. Metode ini mencoba untuk mendapatkan kepemilikan mutex, tetapi mengembalikan tidak lebih dari waktu yang ditetapkan olehAbs_time, terlepas dari keberhasilan. Nilai pengembalian dikonversi ketruejika metode mendapatkan kepemilikan; jika tidak, nilai yang dikembalikan dikonversi kefalse.
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. |