बहु-थ्रेड सिंक्रनाइज़ेशन के लिए उपयोग की जाने वाली स्थिति वस्तु।
..notify()
function का उपयोग प्रतीक्षा थ्रेड (यदि कोई हो) को जगाने के लिए किया जाता है. केवल थ्रेड जो कॉल किया है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}, {@fun/Threads/ThreadCondition/release release}, {@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()
फ़ंक्शन का उपयोग थ्रेड लॉक (लॉक) का अनुरोध करने के लिए किया जाता है।
प्राप्त करना
कृपया देखेंThreadCondition.notify()
उदाहरणों के लिए अनुभाग।
उपयोग करने से पहलेwait()
, आपको वर्तमान स्थिति वस्तु के थ्रेड लॉक (लॉक) का अनुरोध करने की आवश्यकता है.
{@fun/Threads/ThreadCondition/notify notify}, {@fun/Threads/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/release release}, {@fun/ThreadCondition/ThreadCondition/release release}, {@fun/ThreadCondition/ThreadCondition/notifyAll notifyAll}, {@fun/Threads/ThreadCondition/wait wait}, {@fun/Threads/ThreadCondition/release release}, {@fun/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