MUTEXとは?
相互排除オブジェクト(MUTEX)は、コンピュータープログラムで使用するために作成されたオブジェクトです。 MUTEXの本質的な機能は、複数のプログラムスレッドが単一のリソースを利用できるようにすることです。 一般に、相互排除オブジェクトの機能は、リソースへのアクセスがプログラムのさまざまな側面間で継続的にやり取りされる環境を作成することにより、単一のリソースの使用を許可することです。
MUTEXをアクティブにして作成するプロセスは、コンピュータープログラムアプリケーションが開かれたときに行われます。 基本的に、プログラムはMUTEXを作成し、それをオープンプログラムの効率的な機能に必要な特定のリソースに関連付けます。 リソースが呼び出されると、オペレーティングシステムはMUTEXに一意の名前を割り当て、プログラムが開いている限り、それを使用してプロセスを識別します。
MUTEXがアクティブになり、セッションに名前が付けられると、リソースが別のスレッドによって既にアクティブに使用されている場合でも、このリソースを必要とするプログラムの他のスレッドはアクセスできます。 リソースの必要性を示すことにより、MUTEX関数はスレッド間でリソースへのアクセスを交互に切り替えます。 エンドユーザーにとって、このプロセスは透過的です。 すべての実用的な意図と目的のために、2人のユーザーまたは2つのスレッドが同時に同じリソースを使用しているように見えます。
アクセスの転送速度は非常に速いので、エンドユーザーには気付かれることさえありませんが、リソースが使用されているときは常に、シーケンス内の1つのスレッドに効果的にロックされることに注意してください。 リソースの使用を必要とする別のスレッドはリクエストを発行します。リクエストはキューに入り、最初のスレッドがアクティブな使用を終了するまでそこに残ります。 その時点で、リソースはロック解除され、MUTEX関数はキューの次のスレッドにアクティブアクセスを許可します。 3番目のスレッドがアクティブでリソースを必要とする場合、MUTEXはこのスレッドをキューに追加し、順番にアクセスを許可します。