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_mutex
recursive_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_lock
dan 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 kebool
dan adalahtrue
jika metode mendapatkan kepemilikan, tetapi sebaliknyafalse
.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 darichrono::duration
. Metode ini mencoba untuk mendapatkan kepemilikan mutex, tetapi kembali dalam waktu yang ditentukan olehRel_time
, terlepas dari keberhasilan. Nilai pengembalian dikonversi ketrue
jika metode mendapatkan kepemilikan; jika tidak, nilai yang dikembalikan dikonversi kefalse
.Metode
try_lock_until
harus 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 ketrue
jika metode mendapatkan kepemilikan; jika tidak, nilai yang dikembalikan dikonversi kefalse
.
Jenis mutex juga dikenal sebagai jenis yang dapat dikunci. Jika tidak menyediakan fungsi try_lock
anggota , 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. |