Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】Thread::Mutex::lock()メソッドの使い方

lockメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

lockメソッドは、RubyのThread::Mutexクラスに属し、ミューテックスオブジェクトをロックする機能を提供するメソッドです。これは、複数のスレッドが共有リソース(データなど)に同時にアクセスする際に発生するデータの競合を防ぎ、整合性を保つための「排他制御」に用いるものです。

このlockメソッドが呼び出されると、現在のスレッドはそのミューテックスの所有権を取得し、共有リソースへの排他的なアクセスが可能になります。もし、他のスレッドによってすでにミューテックスがロックされている場合は、ロックが解放されるまで呼び出し元スレッドは処理を一時停止し、待機します。

共有リソースへの処理が完了した後には、unlockメソッドを呼び出してミューテックスを必ず解放してください。ロックの解放を忘れると、他のスレッドが永久に待機し続ける「デッドロック」状態に陥り、プログラムが停止してしまう可能性があるため、十分な注意が必要です。

安全かつ確実にlockunlockのペアを管理し、例外発生時にも確実にロックを解放するためには、通常、Thread::Mutex#synchronizeメソッドの利用が推奨されます。このlockメソッドは、並行処理を行うアプリケーションにおいて、共有データの安全な操作を実現するために不可欠な機能です。

構文(syntax)

1require 'thread'
2
3my_mutex = Thread::Mutex.new
4my_mutex.lock

引数(parameters)

引数なし

引数はありません

戻り値(return)

self

このメソッドは、ミューテックスがロックされるまで待機し、ロックが取得された後、そのミューテックスオブジェクト自身を返します。

関連コンテンツ