Aracılığıyla paylaş


unique_lock Sınıfı

bir kilitlenmesini ve kilidinin açılmasını yöneten nesneler oluşturmak için örneği oluşturulabilen bir mutexşablonu temsil eder.

Sözdizimi

template <class Mutex>
class unique_lock;

Açıklamalar

Şablon bağımsız değişkeninin Mutex bir mutex türünü adlandırması gerekir.

dahili olarak, bir unique_lock ilişkilendirilmiş mutex nesnenin işaretçisini ve geçerli iş parçacığının sahip mutexolup olmadığını gösteren bir bool depolar.

Üyeler

Genel Tür Tanımları

Adı Açıklama
mutex_type şablon bağımsız değişkeninin eş anlamlısı Mutex.

Ortak Oluşturucular

Adı Açıklama
Unique_lock Bir unique_lock nesne oluşturur.
~unique_lock Yıkıcı Nesnesiyle unique_lock ilişkili tüm kaynakları serbest bırakır.

Genel Yöntemler

Adı Açıklama
lock İş parçacığı ilişkili mutexöğesinin sahipliğini elde edene kadar çağıran iş parçacığını engeller.
Mutex İlişkili mutexöğesine depolanmış işaretçiyi alır.
owns_lock Çağıran iş parçacığının ilişkili mutexöğesine sahip olup olmadığını belirtir.
Sürüm Nesnenin unique_lock ilişkili mutex nesneden ayrıştırılması.
Takas İlişkili mutex ve sahiplik durumunu belirtilen nesnenin durumuyla değiştirir.
try_lock engelleme olmadan ilişkili mutex sahipliğini elde etmeye çalışır.
try_lock_for engelleme olmadan ilişkili mutex sahipliğini elde etmeye çalışır.
try_lock_until engelleme olmadan ilişkili mutex sahipliğini elde etmeye çalışır.
Kilidini İlişkili mutexöğesinin sahipliğini serbest bırakır.

Ortak İşleçler

Adı Açıklama
işleç bool Çağıran iş parçacığının ilişkili mutexöğesine sahip olup olmadığını belirtir.
operator= Depolanan mutex işaretçiyi ve ilişkili sahiplik durumunu belirtilen bir nesneden kopyalar.

Devralma Hiyerarşisi

Unique_lock

Gereksinimler

Üst bilgi:<mutex>

Ad alanı: std

lock

İş parçacığı ilişkili mutexöğesinin sahipliğini elde edene kadar çağıran iş parçacığını engeller.

void lock();

Açıklamalar

Depolanan mutex işaretçi NULL ise, bu yöntem hata koduna operation_not_permittedsahip bir system_error oluşturur.

Çağıran iş parçacığı ilişkili mutexöğesine zaten sahipse, bu yöntem hata koduna resource_deadlock_would_occursahip bir system_error oluşturur.

Aksi takdirde, bu yöntem ilişkili mutex öğesini çağırır lock ve iç iş parçacığı sahiplik bayrağını olarak trueayarlar.

Mutex

İlişkili mutexöğesine depolanmış işaretçiyi alır.

mutex_type *mutex() const noexcept;

işleç bool

Çağıran iş parçacığının ilişkili mutex'in sahipliğine sahip olup olmadığını belirtir.

explicit operator bool() noexcept

İade Değeri

true mutex iş parçacığına sahipse; aksi takdirde false.

operator=

Depolanan mutex işaretçiyi ve ilişkili sahiplik durumunu belirtilen bir nesneden kopyalar.

unique_lock& operator=(unique_lock&& Other) noexcept;

Parametreler

Diğer
Bir unique_lock nesnesi.

İade Değeri

*this

Açıklamalar

Çağıran iş parçacığı daha önce ilişkili mutexolan öğesine sahipse, bu yöntem üzerinde mutexçağrısından unlock önce yeni değerleri atar.

Kopyalamadan sonra, bu yöntem Diğer'i varsayılan olarak oluşturulur duruma ayarlar.

owns_lock

Çağıran iş parçacığının ilişkili mutexöğesine sahip olup olmadığını belirtir.

bool owns_lock() const noexcept;

İade Değeri

true iş parçacığının sahibi mutexise ; değilse, false.

Sürüm

Nesnenin unique_lock ilişkili mutex nesneden ayrıştırılması.

mutex_type *release() noexcept;

İade Değeri

Depolanan mutex işaretçinin önceki değeri.

Açıklamalar

Bu yöntem, depolanan mutex işaretçinin değerini 0 olarak ayarlar ve iç mutex sahiplik bayrağını olarak falseayarlar.

swap

İlişkili mutex ve sahiplik durumunu belirtilen nesnenin durumuyla değiştirir.

void swap(unique_lock& Other) noexcept;

Parametreler

Diğer
Bir unique_lock nesnesi.

try_lock

engelleme olmadan ilişkili mutex sahipliğini elde etmeye çalışır.

bool try_lock() noexcept;

İade Değeri

trueyöntemi , öğesinin mutexsahipliğini başarıyla alırsa, aksi takdirde . false

Açıklamalar

Depolanan mutex işaretçi NULL ise, yöntemi hata koduna operation_not_permittedsahip bir system_error oluşturur.

Çağıran iş parçacığına zaten sahipse mutexyöntemi, hata koduna resource_deadlock_would_occursahip bir system_error oluşturur.

try_lock_for

engelleme olmadan ilişkili mutex sahipliğini elde etmeye çalışır.

template <class Rep, class Period>
bool try_lock_for(
    const chrono::duration<Rep, Period>& Rel_time);

Parametreler

Rel_time
yönteminin sahipliğini mutexelde etmeye çalıştığı maksimum süreyi belirten bir chrono::d uration nesnesi.

İade Değeri

trueyöntemi , öğesinin mutexsahipliğini başarıyla alırsa, aksi takdirde . false

Açıklamalar

Depolanan mutex işaretçi NULL ise, yöntemi hata koduna operation_not_permittedsahip bir system_error oluşturur.

Çağıran iş parçacığına zaten sahipse mutexyöntemi, hata koduna resource_deadlock_would_occursahip bir system_error oluşturur.

try_lock_until

engelleme olmadan ilişkili mutex sahipliğini elde etmeye çalışır.

template <class Clock, class Duration>
bool try_lock_until(const chrono::time_point<Clock, Duration>& Abs_time);

bool try_lock_until(const xtime* Abs_time);

Parametreler

Abs_time
Yöntemin artık sahipliğini mutexelde etmeye çalışmadığı eşiği belirten bir zaman noktası.

İade Değeri

trueyöntemi , öğesinin mutexsahipliğini başarıyla alırsa, aksi takdirde . false

Açıklamalar

Depolanan mutex işaretçi NULL ise, yöntemi hata koduna operation_not_permittedsahip bir system_error oluşturur.

Çağıran iş parçacığına zaten sahipse mutexyöntemi, hata koduna resource_deadlock_would_occursahip bir system_error oluşturur.

unique_lock Oluşturucu

Bir unique_lock nesne oluşturur.

unique_lock() noexcept;
unique_lock(unique_lock&& Other) noexcept;
explicit unique_lock(mutex_type& Mtx);

unique_lock(mutex_type& Mtx, adopt_lock_t Adopt);

unique_lock(mutex_type& Mtx, defer_lock_t Defer) noexcept;
unique_lock(mutex_type& Mtx, try_to_lock_t Try);

template <class Rep, class Period>
unique_lock(mutex_type& Mtx,
    const chrono::duration<Rep, Period>
Rel_time);

template <class Clock, class Duration>
unique_lock(mutex_type& Mtx,
    const chrono::time_point<Clock, Duration>
Abs_time);

unique_lock(mutex_type& Mtx,
    const xtime* Abs_time) noexcept;

Parametreler

Mtx
Bir mutex türü nesnesi.

Rel_time
yönteminin sahipliğini mutexelde etmeye çalıştığı maksimum süreyi belirten bir chrono::d uration nesnesi.

Abs_time
Yöntemin artık sahipliğini mutexelde etmeye çalışmadığı eşiği belirten bir zaman noktası.

Diğer
Bir unique_lock nesnesi.

Açıklamalar

İlk oluşturucu, ilişkili bir mutex işaretçisi değeri 0 olan bir nesne oluşturur.

İkinci oluşturucu, ilişkili mutex durumunu Diğer'den taşır. Taşımadan sonra, Diğer artık bir mutex ile ilişkilendirilmemiştir.

Kalan oluşturucular , depolanan işaretçi olarak & Mtx'imutex depolar. sahipliğini mutex varsa ikinci bağımsız değişken belirler.

Adı Açıklama
No argument Sahiplik, ilişkili mutex nesnede lock yöntemi çağrılarak elde edilir.
Adopt Sahiplik varsayılır. Mtx oluşturucu çağrıldığında kilitlenmelidir.
Defer Çağıran iş parçacığının nesneye sahip mutex olmadığı varsayılır. Mtx oluşturucu çağrıldığında kilitlenmemelidir.
Try Sahiplik, ilişkili mutex nesnede çağrılarak try_lock belirlenir. Oluşturucu hiçbir şey atamaz.
Rel_time Sahiplik, çağrılarak try_lock_for(Rel_time)belirlenir.
Abs_time Sahiplik, çağrılarak try_lock_until(Abs_time)belirlenir.

~unique_lock Yıkıcı

Nesnesiyle unique_lock ilişkili tüm kaynakları serbest bırakır.

~unique_lock() noexcept;

Açıklamalar

Çağıran iş parçacığı ilişkili mutexöğesine sahipse, yıkıcı nesne üzerinde mutex unlock çağrısı yaparak sahipliği serbest bırakır.

Kilidini

İlişkili mutexöğesinin sahipliğini serbest bırakır.

void unlock();

Açıklamalar

Çağıran iş parçacığı ilişkili mutexöğesine sahip değilse, bu yöntem hata koduna operation_not_permittedsahip bir system_error oluşturur.

Aksi takdirde, bu yöntem ilişkili mutex öğesini çağırır unlock ve iç iş parçacığı sahiplik bayrağını olarak falseayarlar.

Ayrıca bkz.

Üst Bilgi Dosyaları Başvurusu
<Mutex>