メインコンテンツまでスキップ
Knowledgebase
Home
Renesas Electronics Japan - Knowledgebase

ミューテックス(Mutex)の使用に関するFAQ

最終更新日:2017/07/05

質問1.ミューテックスとは何ですか?

回答
ミューテックスとはバイナリ・セマフォのことであり、一度に1スレッドしかミューテックスを所有できません。

また、同じスレッドが所有しているミューテックスでは、ミューテックスの取得操作を複数回、正確には4,294,967,295回実行することができます。
ミューテックスオブジェクトには、tx_mutex_getおよびtx_mutex_putという2つの操作があります。
取得操作によって、別のスレッドに所有権を保持されていないミューテックスを取得し、同時に解放操作によって以前に取得したミューテックスをリリースします。
ミューテックスをリリースするスレッドについては、解放操作の回数はそれ以前の取得操作の回数と同じでなければなりません。それぞれのミューテックスは、公開リソースです。
ThreadXは、ミューテックスの使い方に制限を設けていません。

質問2.ミューテックスは、いつ使うべきですか?

回答
ThreadXのミューテックスは、相互排他を行うためだけに使用されます。カウンティングセマフォとは異なり、ミューテックスはイベント通知のためのメソッドとしては使用しません。ミューテックスの理想的な使い方は、非常に重要(クリティカル)な部分での実行制御です。

質問3.あるスレッドが所有しているミューテックスを別のスレッドが取得しようとしたらどうなりますか?

回答
すでに別のスレッドが所有しているミューテックスに対して取得操作を実行している間、アプリケーションのスレッドは中断します。
ミューテックスを所有しているスレッドが解放操作を同じ回数実行した後、中断していたスレッドが取得操作を実行して、ミューテックスの所有権が渡されてから、スレッドは再開します。

複数のスレッドが同じミューテックスで中断している場合、スレッドは中断した順序で再開されます(FIFO)。
ただし、生成中にミューテックスの優先度継承が選択された場合は、優先度の回復が自動的に実行されます。
またスレッドの中断を解除するミューテックスの開放操作呼び出し前に、アプリケーションがtx_mutex_prioritizeをコールする場合も、優先度の回復が可能です。
ミューテックスが優先順位を付ける処理によって、中断リストの先頭に最高優先度スレッドが配置され、他の中断スレッドはすべて同じFIFOの順序のままとなります。

質問4.デッドリエンブラスとは何ですか?

回答
ミューテックスの所有に関して、最も注意を要する危険な“落とし穴”の一つが“デッドリエンブラス”です。
デッドリエンブラスは、“デッドロック”とも呼ばれ、すでに別のスレッドが所有しているミューテックスの取得を試みながら、2つ以上のスレッドが無期限に中断している状態のことです。

質問5.優先度の逆転とは何ですか?

回答
相互排他に関連する主な問題の一つが優先度の逆転です。この問題は、優先度の高いスレッドが必要とするミューテックスを、優先度の低いスレッドが保有している状況で発生します。
これ自体は正常な状態です。
しかしながら、その中間の優先度を割り当てられたスレッドは、中断状態が持続するために優先度の逆転を引き起こす恐れがあります。
セマフォと異なり、ThreadXのミューテックスオブジェクトは、オプションとして優先度継承を備えています。

質問6.優先度継承とは何ですか?

回答
優先度継承の基本的な考え方は、優先度の低いスレッドの優先度を、その優先度の低いスレッドが所有するミューテックスを使用したい優先度の高いスレッドの優先度まで、一時的に引き上げようというものです。
優先度の低いスレッドが所有するミューテックスをリリースすると、その優先度の低いスレッドは元の優先度に回復して、優先度の高いスレッドにそのミューテックスの所有権を与えます。
この機能は、優先度の低いスレッドがミューテックスを所有する期間内のみ優先度逆転を限定することで、優先度の逆転を解消します。

質問7.さらに詳しい情報はどこにありますか?

回答
さらに詳しい情報は、ThreadXユーザマニュアルをご参照ください。

©1997-2016 Express Logic, Inc. All rights reserved.本文書と関連するThreadXソフトウェアは、Express Logic, Inc.の独占所有物です。各々にExpress Logic, Inc.の専有情報が含まれています。

 

適用製品

Renesas Synergy™ プラットフォーム
Renesas Synergy™ ソフトウェア