std::lock_guard
std::lock_guard 在構造函數中進行加鎖,析構函數中進行解鎖。
std::unique_lock
類 unique_lock 是通用互斥包裝器,允許延遲鎖定、鎖定的有時限嘗試、遞歸鎖定、所有權轉移和與條件變量一同使用。
unique_lock比lock_guard使用更加靈活,功能更加強大。
使用unique_lock需要付出更多的時間、性能成本。
std::defer_lock_t, std::try_to_lock_t, std::adopt_lock_t
Type Effect(s)
defer_lock_t do not acquire ownership of the mutex
try_to_lock_t try to acquire ownership of the mutex without blocking
adopt_lock_t assume the calling thread already has ownership of the mutex
std::lock
std::condition_variable
void wait( std::unique_lock<std::mutex>& lock, Predicate pred );
等價於
while (!pred()) {
wait(lock);
}