std::recursive_mutex::try_lock
提供: cppreference.com
bool try_lock(); |
(C++11以上) | |
ミューテックスのロックを試みます。 すぐに戻ります。 ロックの取得に成功した場合は true を返し、そうでなければ false を返します。
この関数は、ミューテックスが現在いかなる他のスレッドにもロックされていなくても、 spurious に失敗して false を返すことが認められています。
スレッドは再帰ミューテックスに対して繰り返し try_lock を呼んでも構いません。 try_lock の呼び出しが成功すると、所有権のカウントがインクリメントされます。 ミューテックスは、そのスレッドが同じ回数だけ unlock の呼び出しを行った後にのみ、解放されます。
所有権の最大カウントは未規定です。 最大を超過した場合、 try_lock の呼び出しは false を返します。
true を返した場合、同じミューテックスに対する以前の unlock() 操作は、この操作に対して同期します (std::memory_order を参照してください)。 false を返した場合は同期されないことに注意してください。
引数
(なし)
戻り値
ロックの取得に成功した場合は true、そうでなければ false。
例外
(なし)
例
Run this code
#include <iostream>
#include <mutex>
int main()
{
std::recursive_mutex test;
if (test.try_lock()) {
std::cout << "lock acquired\n";
test.unlock();
} else {
std::cout << "lock not acquired\n";
}
// 非再帰的なミューテックスならば今 try_lock から false を戻します
if (test.try_lock()) {
std::cout << "lock acquired\n";
test.unlock();
} else {
std::cout << "lock not acquired\n";
}
}
出力:
lock acquired
lock acquired
関連項目
| ミューテックスをロックします。 利用可能でない場合はブロックします (パブリックメンバ関数) | |
| ミューテックスのロックを解除します (パブリックメンバ関数) | |
mtx_trylock の C言語リファレンス
| |