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

オブジェクトロック

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

オペレーティング システムのロックとは異なり、ファイバー ロックは純粋に論理的に実装され、ロックとロック解除の負荷が小さい

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

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

1
String Lock.toString();

結果を返す:

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

toJSON

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

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

呼び出しパラメータ:

  • key: ストリング、未使用

結果を返す:

  • Value、シリアライズ可能なJSONを含む値を返します