کےCondition()
فنکشن کا استعمال ایک شرط متغیر آبجیکٹ بنانے کے لئے کیا جاتا ہے ، جو ایک ملٹی تھریڈڈ ہم وقت سازی کے ماحول میں تھریڈز کے مابین ہم وقت سازی اور مواصلات کو حاصل کرنے کے لئے استعمال ہوتا ہے۔Condition()
، ایک تھریڈ انتظار کر سکتا ہے جب کچھ شرائط پوری نہیں ہوتی ہیں جب تک کہ دوسرا تھریڈ اسے مطلع نہ کرے کہ شرط پوری ہوگئی ہے۔
کےCondition()
فنکشن a لوٹاتا ہےThreadCondition
object.
ThreadCondition
چیز
حالت
function consumer(productionQuantity, dict, condition) {
for (var i = 0; i < productionQuantity; i++) {
condition.acquire()
while (dict.get("array").length == 0) {
condition.wait()
}
var arr = dict.get("array")
var count = arr.shift()
dict.set("array", arr)
Log("consumer:", count, ", array:", arr)
condition.release()
Sleep(1000)
}
}
function producer(productionQuantity, dict, condition) {
for (var i = 0; i < productionQuantity; i++) {
condition.acquire()
var arr = dict.get("array")
arr.push(i)
dict.set("array", arr)
Log("producer:", i, ", array:", arr)
condition.notify()
condition.release()
Sleep(1000)
}
}
function main() {
var dict = threading.Dict()
dict.set("array", [])
var condition = threading.Condition()
var productionQuantity = 10
var producerThread = threading.Thread(producer, productionQuantity, dict, condition)
var consumerThread = threading.Thread(consumer, productionQuantity, dict, condition)
consumerThread.join()
producerThread.join()
}
دو متوازی موضوعات ایک مشترکہ وسائل تک رسائی حاصل.
بیک ٹسٹنگ سسٹم اس فعالیت کو نافذ نہیں کرتا، یہ صرف اس کی وضاحت کرتا ہے.
{@fun/Threads/getThread getThread}، {@fun/Threads/threads/mainThread mainThread}، {@fun/Threads/threading/currentThread currentThread}، {@fun/Threads/threads/threading/Lock Lock}، {@fun/Threads/threads/threading/thread Thread}، {@fun/Threads/threads/threading/event Event}، {@fun/Threads/threads/threading/Dict Dict}، {@fun/Threads/threading/threading/pending pending}، {@fun/Threads/threading/threading/eventLoop}، {@fun/Threads/threads/threading/eventLoop}،
قفل واقعہ