Object 內置對象

對象Lock

纖程鎖對象

不同於操作系統的鎖,纖程鎖是純邏輯實現,加鎖與解鎖負荷很小

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: Boolean, 指定是否等待,為true 時等待,缺省為真

返回結果:

  • Boolean, 返回是否成功獲取鎖,為true 表示成功獲取

acquire 方法用於獲取鎖的擁有權,當鎖處於可獲取狀態時,此方法立即返回true。

當鎖不可獲取,且blocking 為true,則當前纖程進入休眠,當其他纖程釋放鎖後,此方法返回true。

當鎖不可獲取,且blocking 為false,則方法返回false。


release

釋放鎖的擁有權

1
Lock.release();

此方法將釋放對鎖的擁有權,如果當前纖程未擁有鎖,此方法將拋出錯誤。


count

查詢當前等待任務數

1
Integer Lock.count();

返回結果:

  • Integer, 返回任務數

toString

返回對象的字符串表示,一般返回"[Native Object]",對象可以根據自己的特性重新實現

1
String Lock.toString();

返回結果:

  • String, 返回對象的字符串表示

toJSON

返回對象的JSON 格式表示,一般返回對象定義的可讀屬性集合

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

調用參數:

  • key: String, 未使用

返回結果:

  • Value, 返回包含可JSON 序列化的值