【Ruby3.x】Thread::Mutex::locked?()メソッドの使い方
locked?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
locked?メソッドは、Thread::Mutexオブジェクトが現在ロックされているかどうかを確認するメソッドです。
このメソッドは、呼び出された時点のミューテックスの状態を真偽値で返します。具体的には、ミューテックスがすでにいずれかのスレッドによってロックされている場合はtrueを返し、ロックされていない(利用可能な)状態であればfalseを返します。
Thread::Mutexは、複数のスレッドが同時に共有リソース(データやファイルなど)にアクセスする際に、予期せぬ問題(競合状態)が発生するのを防ぎ、処理の整合性を保つための同期機構です。ミューテックスがロックされている間は、他のスレッドはそのミューテックスのロックを取得できず、待機することになります。
locked?メソッドは、現在のロック状態を一時的に確認したい場合に利用できます。例えば、ミューテックスがロック済みであれば別の処理に分岐する、といった制御を行う際に役立ちます。ただし、このメソッドがfalseを返したとしても、その直後に別のスレッドがロックを取得する可能性があるため、locked?の結果だけで安全な排他制御を保証するものではない点に注意が必要です。ミューテックスを安全にロックするにはlockメソッドを、ロックを解放するにはunlockメソッドを使用します。
構文(syntax)
1mutex = Thread::Mutex.new 2mutex.locked?
引数(parameters)
引数なし
引数はありません
戻り値(return)
true or false
Thread::Mutex#locked? メソッドは、ミューテックスが現在ロックされている状態かどうかを返します。ロックされている場合は true を、ロックされていない場合は false を返します。