Bedingungsobjekte für die Synchronisierung von mehreren Themen.
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)
}
}
Nutzungnotify()
Die Funktion weckt den wartenden Thread.
notify()
Die Funktion weckt einen Thread aus der Warteschlange.
notify()
Wenn eine Funktion einen Thread weckt, wird dieser Thread wieder auf den Thread-Schlüssel geworben.
{@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}
notifyAll()
Die Funktion weckt alle wartenden Threads.
Benachrichtigen Sie alle.
BeispieleThreadCondition.notify()
Der Inhalt des Kapitels.
notifyAll()
Die Funktion weckt alle laufenden Threads einzeln, und die erweckten Threads erwerben den Thread-Schlüssel zurück.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}
wait()
Die Funktion wird verwendet, um Threads unter bestimmten Designbedingungen aufzuhalten.
Warten Sie.
BeispieleThreadCondition.notify()
Der Inhalt des Kapitels.
wait()
Die Funktion befreit den Threadlock und holt den Threadlock zurück, wenn sie geweckt wird.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}
acquire()
Die Funktion wird verwendet, um einen Thread zu sperren.
Erwerben
BeispieleThreadCondition.notify()
Der Inhalt des Kapitels.
In Gebrauchwait()
Zuvor war es notwendig, den Thread zu sperren, der den aktuellen Bedingungsgegenstand anfordert.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/release release}
release()
Die Funktion wird verwendet, um einen Thread-Lock freizulassen.
Freisetzung
BeispieleThreadCondition.notify()
Der Inhalt des Kapitels.
In Gebrauchwait()
Dann muss man das Threadlock des aktuellen Bedingungsgegenstandes freimachen.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}
ThreadEvent ThreadDict