输入/搜索内容
内置函数
Global
Log
Market
Trade
Account
Futures
Exchange
IO
Network
Storage
Threads
exchange.Go
EventLoop
ctx.subscribe
ctx.poll
ctx.order
ctx.cancel
ctx.submit
Subscription
threading
Thread
ThreadLock
ThreadEvent
ThreadCondition
ThreadCondition.notify
ThreadCondition.notifyAll
ThreadCondition.wait
ThreadCondition.acquire
ThreadCondition.release
ThreadDict
Server
TA
Talib
OS
结构体
内置变量与常量
通用约定
交易所

唤醒一个正在等待的线程(如果存在)。只有调用了wait()方法的线程才能被唤醒。

notify()

示例

使用notify()函数唤醒等待中的线程。

javascript
function consumer(dict, condition) { while (true) { condition.acquire() while (dict.get("array").length == 0) { Log(threading.currentThread().name(), "wait()...", ", array:", dict.get("array")) condition.wait() } var arr = dict.get("array") var num = arr.shift() Log(threading.currentThread().name(), ", num:", num, ", array:", arr, "#FF0000") dict.set("array", arr) Sleep(1000) condition.release() } } function main() { var condition = threading.Condition() var dict = threading.Dict() dict.set("array", []) var t1 = threading.Thread(consumer, dict, condition) var t2 = threading.Thread(consumer, dict, condition) var t3 = threading.Thread(consumer, dict, condition) Sleep(1000) var i = 0 while (true) { condition.acquire() var msg = "" var arr = dict.get("array") var randomNum = Math.floor(Math.random() * 5) + 1 if (arr.length >= 3) { condition.notifyAll() msg = "notifyAll" } else { arr.push(i) dict.set("array", arr) if (randomNum > 3 && arr.length > 0) { condition.notify() msg = "notify" } else { msg = "pass" } i++ } Log(_D(), "randomNum:", randomNum, ", array:", arr, ", msg:", msg) condition.release() Sleep(1000) } }

参考

备注

notify()函数会唤醒处于等待队列中的一个线程。

notify()函数唤醒线程时,该线程会重新获取线程锁。