কন্ডিশন অবজেক্ট, মাল্টি-থ্রেড সিঙ্ক্রোনাইজেশনের জন্য ব্যবহৃত হয়।
দ্য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()
ফাংশনটি একটি থ্রেড লক (লক) অনুরোধ করতে ব্যবহৃত হয়।
অর্জন ((()
অনুগ্রহ করে দেখুন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}, {@fun/ThreadCondition/threadCondition/release release}, {@threadCondition/release release}, {@threadCondition/threadCondition/release release release}, {@threadCondition/threadCondition/release release}, {@thread
দ্য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