Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::mutex::unlock(3)	      C++ Standard Libary	 std::mutex::unlock(3)

NAME
       std::mutex::unlock - std::mutex::unlock

Synopsis
	  void unlock();  (since C++11)

	  Unlocks the mutex.

	  The  mutex must be locked by the current thread of execution,	other-
       wise, the behavior
	  is undefined.

	  This operation synchronizes-with (as defined	in  std::memory_order)
       any subsequent
	  lock operation that obtains ownership	of the same mutex.

Parameters
	  (none)

Return value
	  (none)

Exceptions
	  Throws nothing.

Notes
	  unlock()  is	usually	 not  called  directly:	 std::unique_lock  and
       std::lock_guard are
	  used to manage exclusive locking.

Example
	  This example shows how lock and unlock can be	used to	protect	shared
       data.

       // Run this code

	#include <iostream>
	#include <chrono>
	#include <thread>
	#include <mutex>

	int g_num = 0;	// protected by	g_num_mutex
	std::mutex g_num_mutex;

	void slow_increment(int	id)
	{
	    for	(int i = 0; i <	3; ++i)	{
		g_num_mutex.lock();
		int g_num_running = ++g_num;
		g_num_mutex.unlock();
		std::cout << id	<< " =>	" << g_num_running << '\n';

		std::this_thread::sleep_for(std::chrono::seconds(1));
	    }
	}

	int main()
	{
	    std::thread	t1(slow_increment, 0);
	    std::thread	t2(slow_increment, 1);
	    t1.join();
	    t2.join();
	}

Possible output:
	0 => 1
	1 => 2
	0 => 3
	1 => 4
	0 => 5
	1 => 6

See also
	  lock	   locks the mutex, blocks if the mutex	is not available
		   (public member function)
	  try_lock tries to lock the mutex, returns if the mutex is not	avail-
       able
		   (public member function)

http://cppreference.com		  2022.07.31		 std::mutex::unlock(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::mutex::unlock&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help