std::mutex::try_lock

From cppreference.com
 
 
Thread support library
Threads
thread (C++11)
this_thread namespace
get_id (C++11)
yield (C++11)
sleep_for (C++11)
sleep_until (C++11)
Mutual exclusion
mutex (C++11)
timed_mutex (C++11)
Generic lock management
lock_guard (C++11)
unique_lock (C++11)
defer_lock_t
try_to_lock_t
adopt_lock_t
(C++11)
(C++11)
(C++11)
lock (C++11)
try_lock (C++11)
defer_lock
try_to_lock
adopt_lock
(C++11)
(C++11)
(C++11)
Condition variables
condition_variable (C++11)
condition_variable_any (C++11)
notify_all_at_thread_exit (C++11)
cv_status (C++11)
Futures
promise (C++11)
future (C++11)
shared_future (C++11)
packaged_task (C++11)
async (C++11)
launch (C++11)
future_status (C++11)
future_error (C++11)
future_category (C++11)
future_errc (C++11)
 
std::mutex
Member functions
mutex::mutex
Locking
mutex::lock
mutex::try_lock
mutex::unlock
Native handle
mutex::native_handle
 
bool try_lock();
(since C++11)

Tries to lock the mutex. Returns immediately. On successful lock acquisition returns true, otherwise returns false.

Contents

[edit] Parameters

(none)

[edit] Return value

true if the lock was acquired successfully, otherwise false.

[edit] Exceptions

[edit] Example

This example shows lock, try_lock and unlock in action

#include <iostream>
#include <mutex>
 
int main()
{
    std::mutex test;
    if (test.try_lock()==true)
        std::cout << "lock acquired" << std::endl;
    else
        std::cout << "lock not acquired" << std::endl;
    test.unlock();	//now unlock the mutex
    test.lock();	//to lock it again
    if (test.try_lock())  //true can be left out
        std::cout << "lock acquired" << std::endl;
    else
        std::cout << "lock not acquired" << std::endl;
    test.lock(); //and now the finale (a block)
}

Output:

lock acquired
lock not acquired
(program hangs)

[edit] See also

locks the mutex, blocks if the mutex is not available
(public member function)
unlocks the mutex
(public member function)