std::recursive_timed_mutex::lock
提供:cppreference.com
< cpp | thread | recursive timed mutex
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| void lock(); |
(C + + 11以来) | |
ミューテックスをロックします。別のスレッドが既にミューテックスをロックしていた場合にロックが取得されるまで、
lockへの呼び出しは実行をブロックします。.Original:
Locks the mutex. If another thread has already locked the mutex, a call to
lock will block execution until the lock is acquired.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
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.
目次 |
[編集] パラメータ
(なし)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] 値を返します
(なし)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] 例外
エラーが発生したときに、その仕様を満たすことからstd::system_errorを防ぐことができ、基礎となるオペレーティング·システムからのエラーを含む、
lockをスロー.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.
You can help to correct and verify the translation. Click here for instructions.
[編集] 例
この例では、
lockとunlockが共有データを保護するために使用できる方法を示しています。.
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.
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
[編集] も参照してください
| ミューテックスが使用できない場合は戻りますが、mutexをロックしようとします Original: tries to lock the mutex, returns if the mutex is not available The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
| ミューテックスは、指定されたタイムアウト期間のbeen unavailable持っている場合、返品をmutexをロックしようとします Original: tries to lock the mutex, returns if the mutex has been unavailable for the specified timeout duration The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
| 、mutexをロックしようとし、指定された時点に達するまで、ミューテックスがbeen unavailable持っている場合を返します Original: tries to lock the mutex, returns if the mutex has been unavailable until specified time point has been reached The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
| ミューテックスのロックを解除します Original: unlocks the mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |