Die Ressourcen sind geladen. Beförderung...

ThreadBedingung

Bedingungsobjekte für die Synchronisierung von mehreren Themen.

Anzeigen



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}

Benachrichtigen Sie alle

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}

Warten Sie.

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}

zu erwerben

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}

Freisetzung

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