وسائل لوڈ ہو رہے ہیں... لوڈنگ...

تھریڈCondition

حالت کا اعتراض، کثیر تھریڈ ہم وقت سازی کے لئے استعمال کیا جاتا ہے.

مطلع کرنا

کے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()فنکشن استعمال کیا جاتا ہے کچھ ڈیزائن حالات کے تحت ایک thread انتظار کرنے کے لئے.

انتظار کرو

براہ مہربانی ملاحظہ کریں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/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