ロックすると、スレッドはそのacquire()メソッドを呼びます。 いったんスレッドがロックを所有すると返ります。 アンロックすると、スレッドはそのrelease()メソッドを呼びます。 acquire()/release()呼び出しペアはネストされるべきです。 最後のrelease()だけは(最も外側のペアのrelease())は ロックをアンロック状態へリセットします。 そしてacquire()でブロックされた別のスレッドが進むことを許可します。
[blocking = 1 ]) |
引数なしで呼び出されたとき: もしこのスレッドが既にロックを所有する場合、 それによって再帰レベルをインクリメントし、直ちに返ります。 一方、別のスレッドがロックを所有する場合、アンロックされるまでブロックします。 いったんそのロックがアンロックされた(どのスレッドによっても所有されていない) とき、所有権を掴み、再帰レベルを1にセットし、返ります。 1つ以上のスレッドが、そのロックがアンロックされるのを待ち、 ブロックされているとき、ただ1つのスレッドがロックの所有権を掴むことができます。 この場合、返り値はありません。
blocking引数がTrueにセットされて呼び出されたとき、 引数無しで呼び出したときと同じように動作し、trueを返します。
blocking引数がFalseにセットされて呼び出されたとき、ブロックしません。 もし引数無しの呼び出しにおいてブロックされるような状況ならば、 直ちにFalseを返します; そうでない状況ならば、引数無しの呼出しと同じように動作して、 Trueを返します。
) |
呼出しスレッドがロックを所有しているとき、単にこのメソッドを呼出してください。 アンロック状態のとき、このメソッドを呼出してはいけません。
返り値はありません。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。