조건 객체, 멀티 스레드 동기화를 위해 사용된다.
이notify()
이 함수는 대기 스레드를 깨우기 위해 사용 됩니다.wait()
이 방법은 깨어나게 될 것입니다.
통지합니다
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()
이 함수는 대기열의 스레드를 깨우게 합니다.
그 때notify()
이 함수가 스레드를 깨우면 스레드는 스레드 잠금 장치를 다시 얻습니다.
{@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}
이notifyAll()
이 함수는 대기 중인 모든 스레드를 깨웁니다.
모든 것을 알려주세요.
참고:ThreadCondition.notify()
예제 섹션.
이notifyAll()
이 함수는 대기 중인 모든 스레드를 하나씩 깨우고, 깨진 스레드는 스레드 잠금을 다시 얻습니다.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}
이wait()
특정 설계 조건에서 스레드를 기다리게 하는 기능입니다.
잠깐만
참고:ThreadCondition.notify()
예제 섹션.
이wait()
기능은 스레드 잠금을 풀고 깨어나면 스레드 잠금을 다시 얻습니다.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/acquire acquire}, {@fun/Threads/ThreadCondition/release release}
이acquire()
함수는 스레드 잠금 (lock) 을 요청하는 데 사용됩니다.
취득 (()
참고:ThreadCondition.notify()
예제 섹션.
사용 전에wait()
, 당신은 현재 상태 객체의 스레드 잠금 (lock) 를 요청해야 합니다.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/release release}
이release()
함수는 스레드 잠금 (불 잠금) 을 풀기 위해 사용됩니다.
방출
참고:ThreadCondition.notify()
예제 섹션.
사용 후wait()
, 우리는 현재 조건 객체의 스레드 잠금 (불 잠금) 를 풀어야 합니다.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/acquire acquire}
스레드 이벤트 ThreadDict