দ্য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/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Thread Thread}, {@fun/Threads/threads/threading/event Event}, {@fun/Threads/threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/threading/eventLoop}, {@fun/Threads/threads/threading/eventLoop},
লক ঘটনা