オブジェクト組み込みオブジェクト

オブジェクトロック

ファイバーロックオブジェクト

オペレーティングシステムのロックとは異なり、ファイバーロックは純粋に論理的に実装されており、ロックとロック解除の負荷はわずかです。

1 2 3 4
var l = new coroutine.Lock(); l.acquire(); ..... l.release();

継承

#lineWidth: 1.5 #font: Helvetica,sans-Serif #fontSize: 10 #leading: 1.6 #.this: fill=lightgray #.class: fill=white [<class>object|toString();toJSON()] [<this>Lock|new Lock()|acquire();release();count()] [<class>Condition] [<class>Event] [<class>Semaphore] [object] <:- [Lock] [Lock] <:- [Condition] [Lock] <:- [Event] [Lock] <:- [Semaphore] Lock new Lock() acquire() release() count() object toString() toJSON() Condition Event Semaphore

コンストラクタ

Lock

コンストラクタ

1
new Lock();

メンバー関数

acquire

ロックの所有権を取得する

1
Boolean Lock.acquire(Boolean blocking = true);

呼び出しパラメーター:

  • blocking:ブール値、待機するかどうかを指定します。trueの場合、待機します。デフォルトはtrueです。

戻り結果:

  • Boolean、ロックが正常に取得されたかどうかを返します。trueは取得が成功したことを意味します

取得メソッドは、ロックの所有権を取得するために使用されます。ロックが取得可能な状態にある場合、このメソッドはすぐにtrueを返します。

ロックが使用できず、ブロッキングがtrueの場合、現在のファイバーはスリープ状態になります。他のファイバーがロックを解除すると、このメソッドはtrueを返します。

ロックが使用できず、ブロッキングがfalseの場合、メソッドはfalseを返します。


release

ロックの所有権を解放する

1
Lock.release();

このメソッドはロックの所有権を解放します。現在のファイバーがロックを所有していない場合、このメソッドはエラーをスローします。


count

現在待機中のタスクの数を照会する

1
Integer Lock.count();

戻り結果:

  • Integer、タスクの数を返します

toString

オブジェクトの文字列表現を返します。通常は「[NativeObject]」を返します。オブジェクトは、独自の特性に従って再実装できます。

1
String Lock.toString();

戻り結果:

  • String、オブジェクトの文字列表現を返します

toJSON

オブジェクトのJSON形式の表現を返します。通常、オブジェクトによって定義された読み取り可能な属性のコレクションを返します。

1
Value Lock.toJSON(String key = "");

呼び出しパラメーター:

  • key:文字列、未使用

戻り結果:

  • Value、シリアル化可能なJSONを含む値を返します