Namensräume
Varianten

std::recursive_mutex::lock

Aus cppreference.com

[edit template]

<metanoindex/>

 
 
Thema Support-Bibliothek
Threads
Original:
Threads
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
thread(C++11)
this_thread Namespace
Original:
this_thread namespace
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
get_id(C++11)
yield(C++11)
sleep_for(C++11)
sleep_until(C++11)
Gegenseitigen Ausschluss
Original:
Mutual exclusion
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
mutex(C++11)
timed_mutex(C++11)
Generische Sperrverwaltung
Original:
Generic lock management
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
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)
Zustand Variablen
Original:
Condition variables
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
condition_variable(C++11)
condition_variable_any(C++11)
notify_all_at_thread_exit(C++11)
cv_status(C++11)
Futures
Original:
Futures
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
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::recursive_mutex
Member-Funktionen
Original:
Member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
recursive_mutex::recursive_mutex
Sperren
Original:
Locking
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
recursive_mutex::lock
recursive_mutex::try_lock
recursive_mutex::unlock
Ureinwohner Griff
Original:
Native handle
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
recursive_mutex::native_handle
 
<tbody> </tbody>
void lock();
(seit C++11)

Sperrt den Mutex. Wenn ein anderer Thread bereits den Mutex gesperrt hat, wird die Ausführung des Threads solange blockiert, bis der Mutex gesperrt werden kann. A thread may call lock on a recursive mutex repeatedly. Ownership will only be released after the thread makes a matching number of calls to unlock.

The maximum number of levels of ownership is unspecified. An exception of type std::system_error will be thrown if this number is exceeded.

Parameter

(None)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Rückgabewert

(None)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Ausnahmen

Wirft std::system_error, wenn Fehler auftreten, einschließlich Fehler aus dem zugrunde liegenden Betriebssystem, lock der Erfüllung ihrer Vorgaben verhindern würde .
Original:
Throws std::system_error when errors occur, including errors from the underlying operating system that would prevent lock from meeting its specifications.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Beispiel

Dieses Beispiel zeigt, wie lock und unlock verwendet werden, um gemeinsam genutzte Daten zu schützen .
Original:
This example shows how lock and unlock can be used to protect shared data.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

#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();
    ++g_num;
    std::cout << id << " => " << g_num << '\n';
    g_num_mutex.unlock();

    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

Siehe auch

versucht den Mutex zu sperren und kehrt zurück, wenn der Mutex nicht verfügbar ist
(öffentliche Elementfunktion) [edit]
entsperrt den Mutex
(öffentliche Elementfunktion) [edit]