রিসোর্স লোড হচ্ছে... লোডিং...

থ্রেডলক

থ্রেড লক অবজেক্ট, মাল্টি-থ্রেড সিঙ্ক্রোনাইজেশন প্রসেসিংয়ের জন্য ব্যবহৃত হয়।

অর্জন করা

দ্যacquire()ফাংশনটি একটি থ্রেড লক (লক) অনুরোধ করতে ব্যবহৃত হয়।

অর্জন ((()

অনুগ্রহ করে দেখুনthreading.Lock()উদাহরণ জন্য অধ্যায়.

দ্যacquire()ফাংশন একটি থ্রেড লক অনুরোধ করতে ব্যবহৃত হয়. যখন একটি থ্রেড কলacquire()একটি থ্রেড লক অবজেক্টের ফাংশন, এটি লকটি অর্জন করার চেষ্টা করে। যদি লকটি বর্তমানে অন্য থ্রেড দ্বারা অনুষ্ঠিত না হয়, তাহলে কলিং থ্রেড সফলভাবে লকটি অর্জন করে এবং কার্যকর করা চালিয়ে যায়। যদি লকটি ইতিমধ্যে অন্য থ্রেড দ্বারা অনুষ্ঠিত হয়, তবে থ্রেড কলিংacquire()লকটি খুলে দেওয়া না হওয়া পর্যন্ত বন্ধ থাকবে।

{@fun/Threads/threading/Lock Lock}, {@fun/Threads/ThreadLock/release release}

মুক্তি

দ্যrelease()ফাংশনটি একটি থ্রেড লক (আনলক) মুক্ত করতে ব্যবহৃত হয়।

মুক্তি (((

function consumer(productionQuantity, dict, pLock, cLock) {
    for (var i = 0; i < productionQuantity; i++) {
        pLock.acquire()
        cLock.acquire()
        var arr = dict.get("array")
        var count = arr.shift()
        dict.set("array", arr)
        Log("consumer:", count, ", array:", arr)
        cLock.release()
        Sleep(1000)
        pLock.release()
    }
}

function producer(productionQuantity, dict, pLock, cLock) {
    for (var i = 0; i < productionQuantity; i++) {
        cLock.acquire()   // cLock.acquire() placed after pLock.acquire() will not cause deadlock
        pLock.acquire()   
        var arr = dict.get("array")
        arr.push(i)
        dict.set("array", arr)
        Log("producer:", i, ", array:", arr)
        pLock.release()
        Sleep(1000)
        cLock.release()
    }
}

function main() {
    var dict = threading.Dict()
    dict.set("array", [])
    var pLock = threading.Lock()
    var cLock = threading.Lock()
    var productionQuantity = 10
    var producerThread = threading.Thread(producer, productionQuantity, dict, pLock, cLock)
    var consumerThread = threading.Thread(consumer, productionQuantity, dict, pLock, cLock)

    consumerThread.join()
    producerThread.join()
}

স্থবিরতার পরিস্থিতি পরীক্ষা করা

এটা লক্ষ করা উচিত যে থ্রেড লকগুলির অনুপযুক্ত ব্যবহার স্থবিরতার দিকে পরিচালিত করতে পারে।

{@fun/Threads/threading/Lock Lock}, {@fun/Threads/ThreadLock/acquire acquire}

থ্রেড থ্রেড ইভেন্ট