【Ruby3.x】Thread::Mutex::lock()メソッドの使い方
lockメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
lockメソッドは、RubyのThread::Mutexクラスに属し、ミューテックスオブジェクトをロックする機能を提供するメソッドです。これは、複数のスレッドが共有リソース(データなど)に同時にアクセスする際に発生するデータの競合を防ぎ、整合性を保つための「排他制御」に用いるものです。
このlockメソッドが呼び出されると、現在のスレッドはそのミューテックスの所有権を取得し、共有リソースへの排他的なアクセスが可能になります。もし、他のスレッドによってすでにミューテックスがロックされている場合は、ロックが解放されるまで呼び出し元スレッドは処理を一時停止し、待機します。
共有リソースへの処理が完了した後には、unlockメソッドを呼び出してミューテックスを必ず解放してください。ロックの解放を忘れると、他のスレッドが永久に待機し続ける「デッドロック」状態に陥り、プログラムが停止してしまう可能性があるため、十分な注意が必要です。
安全かつ確実にlockとunlockのペアを管理し、例外発生時にも確実にロックを解放するためには、通常、Thread::Mutex#synchronizeメソッドの利用が推奨されます。このlockメソッドは、並行処理を行うアプリケーションにおいて、共有データの安全な操作を実現するために不可欠な機能です。
構文(syntax)
1require 'thread' 2 3my_mutex = Thread::Mutex.new 4my_mutex.lock
引数(parameters)
引数なし
引数はありません
戻り値(return)
self
このメソッドは、ミューテックスがロックされるまで待機し、ロックが取得された後、そのミューテックスオブジェクト自身を返します。