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

থ্রেড

Threadবস্তুর দ্বারা তৈরি বা ফিরে আসতে পারেthreading.Thread(), threading.getThread(), threading.mainThread(), এবংthreading.currentThread().

পিক বার্তা

দ্যpeekMessage()একটি থ্রেড থেকে একটি বার্তা পেতে ফাংশন ব্যবহার করা হয়।

দ্যpeekMessage()ফাংশন বর্তমান থ্রেড অবজেক্টের সাথে যুক্ত থ্রেড দ্বারা গৃহীত বার্তাটি ফেরত দেয়।

string, number, bool, object, array, null value এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য প্রকার

পিকমেইজ ((() পিকমেইজ ((টাইমআউট)

প্যারামিটারtimeoutis the timeout setting. এটি প্যারামিটার দ্বারা সেট করা মিলিসেকেন্ডের সংখ্যা ব্লক করবে এবং ডেটা ফেরত দেবে। যদি কোনও ডেটা না থাকে এবং টাইমআউট সীমা অতিক্রম করে, তাহলে একটি শূন্য মান ফেরত দেওয়া হবে। যদিtimeout0 বাtimeoutপ্যারামিটার পাস করা হয় না, এর মানে হল যে প্রক্রিয়া ব্লক হবে এবং অপেক্ষা করুন যতক্ষণ না চ্যানেল থেকে তথ্য গ্রহণ করা হয়.timeoutযদি -১ এ সেট করা হয়, তাহলে এর মানে হল যে প্রক্রিয়াটি অবিলম্বে ডেটা ব্লক করবে না এবং ফেরত দেবে না। যদি কোন ডেটা না থাকে, তাহলে একটি শূন্য মান ফেরত দেওয়া হবে।

টাইমআউট মিথ্যা সংখ্যা

function main() {
    var t1 = threading.Thread(function() {
        for (var i = 0; i < 10; i++) {
            Log("thread1 postMessage():", i)
            threading.mainThread().postMessage(i)
            Sleep(500)
        }        
    })

    while (true) {
        var msg = threading.currentThread().peekMessage()
        Log("main peekMessage():", msg)
        if (msg == 9) {
            break
        }
        Sleep(1000)
    }

    t1.join()
}

একটি সমান্তরাল থ্রেড থেকে প্রধান থ্রেডে বার্তা পাঠান।

প্রোগ্রাম লেখার সময়, আমাদের থ্রেড ব্লক সমস্যার দিকে মনোযোগ দিতে হবে।

{@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name}, {@Threads/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop event

postMessage

দ্যpostMessage()ফাংশন একটি থ্রেডে একটি বার্তা পাঠাতে ব্যবহৃত হয়।

postMessage ((msg)

প্যারামিটারmsgএই বার্তাটি পাঠানো হবে।

মেসেজ সত্য সিস্টেম দ্বারা সমর্থিত যে কোন ধরনের, যেমন স্ট্রিং, সংখ্যা, bool, বস্তু, অ্যারে, ফাংশন, শূন্য মান ইত্যাদি।

function main() {
    var t1 = threading.Thread(function() {
        for (var i = 0; i < 10; i++) {
            Log("thread1 postMessage():", i)
            threading.mainThread().postMessage(i)
            Sleep(500)
        }        
    })
    for (var i = 0; i < 10; i++) {
        var event = threading.mainThread().eventLoop()
        Log("main event:", event)
        Sleep(500)
    }
    t1.join()
}

একই সময়ে থ্রেডে বার্তা পাঠান এবং ব্যবহার করুনeventLoop()মেসেজ নোটিফিকেশন পেতে।

function main() {
    threading.mainThread().postMessage(function(msg) {
        Log("func from mainThread, msg:", msg)
    })
    
    threading.Thread(function() {
        var func = threading.mainThread().peekMessage()
        func("in " + threading.currentThread().name())
    }).join()
}

এটি একটি ফাংশন পাঠাতে সমর্থন করে।

যখন একটি থ্রেড এর এক্সিকিউশন ফাংশনpostMessage()একটি সংকেত বা তথ্য পাঠাতে ফাংশন, একটি বার্তা ইভেন্ট এছাড়াও উৎপন্ন হয়. আমরা ব্যবহার করতে পারেনeventLoop()মেসেজ নোটিফিকেশন গ্রহণের ফাংশন।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/eventLoop eventLoop}

যোগদান

দ্যjoin()থ্রেড থেকে বেরিয়ে আসার জন্য অপেক্ষা করতে এবং সিস্টেম রিসোর্স পুনরুদ্ধার করতে ফাংশনটি ব্যবহৃত হয়।

দ্যThreadRetবস্তুসম্পাদনের ফলাফল সম্পর্কে তথ্য রয়েছে। বৈশিষ্ট্যগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছেঃ

  • আইডিঃ থ্রেড আইডি।
  • terminated: থ্রেড শেষ হতে বাধ্য কিনা।
  • elapsed: ন্যানো সেকেন্ডে থ্রেডের চলার সময়।
  • ret: থ্রেড ফাংশনের রিটার্ন মান।

ThreadRetবস্তু

যোগদান ((() যোগদান ((টাইমআউট)

দ্যtimeoutপ্যারামিটার থ্রেড শেষ হওয়ার জন্য অপেক্ষা করার জন্য মিলিসেকেন্ডে টাইমআউট সেট করতে ব্যবহৃত হয়। যখনtimeoutপ্যারামিটার 0 সেট করা হয় অথবাtimeoutপ্যারামিটার সেট করা হয় না,join()ফাংশন ব্লক এবং থ্রেড শেষ পর্যন্ত অপেক্ষা করবে. যখনtimeoutপ্যারামিটার -1 এ সেট করা হয়,join()অবিলম্বে ফাংশন ফিরে আসবে।

টাইমআউট মিথ্যা সংখ্যা

function main() {
    var t1 = threading.Thread(function() {
        Log("Hello thread1")
        Sleep(5000)
    })

    var ret = t1.join(1000)
    Log("ret:", ret)   // ret: undefined

    ret = t1.join()
    Log("ret:", ret)   // ret: {"id":1,"terminated":false,"elapsed":5003252000}
}

পরীক্ষা করুনjoin()টাইমআউট ফাংশন এবং রিটার্ন মান আউটপুট।

দ্যjoin()ফাংশন টাইমস আউট এবং রিটার্নundefined.

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Threads/Thread/id id}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads

শেষ করা

দ্যterminate()ফাংশনটি একটি থ্রেডকে জোরপূর্বক শেষ করতে এবং তৈরি থ্রেড দ্বারা ব্যবহৃত হার্ডওয়্যার সংস্থানগুলি মুক্ত করতে ব্যবহৃত হয়।

সমাপ্ত ((()

function main() {
    var t1 = threading.Thread(function() {
        for (var i = 0; i < 10; i++) {
            Log("thread1 i:", i)
            Sleep(1000)
        }
    })

    Sleep(3000)
    t1.terminate()
    Log("after t1.terminate()")

    while (true) {
        LogStatus(_D())
        Sleep(1000)
    }
}

একটি থ্রেডের এক্সিকিউশন জোরপূর্বক শেষ করুন। একটি থ্রেড জোরপূর্বক শেষ করার পরে, লগটিতে এই থ্রেড থেকে কোন আউটপুট থাকবে না।

থ্রেডগুলির জন্য যা জোরপূর্বক শেষ হয়terminate()ফাংশন, আমরা আর ব্যবহার করতে পারবেন নাjoin()তাদের শেষ হওয়ার জন্য অপেক্ষা করার ফাংশন।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@

getData

দ্যgetData()ফাংশন থ্রেড পরিবেশে রেকর্ড ভেরিয়েবল অ্যাক্সেস করতে ব্যবহার করা হয়. তথ্য বৈধ যখন থ্রেড এক্সিকিউটেড না হয়েছেjoin()ফাংশন (সফল প্রস্থান জন্য অপেক্ষা) এবং কার্যকর করা হয়নিterminate()ফাংশন (শক্তির সাথে থ্রেড শেষ) ।

দ্যgetData()ফাংশন মূল মান সংশ্লিষ্ট রিটার্নkeyবর্তমান থ্রেড কনটেক্সটে সংরক্ষিত কী-ভ্যালু জোড়ার প্যারামিটার।

string, number, bool, object, array, null value এবং সিস্টেম দ্বারা সমর্থিত অন্যান্য প্রকার

getData ((() getData ((কী)

দ্যkeyপ্যারামিটার হল সংরক্ষিত কী-মানের জোড়ার কী নাম।

চাবি সত্য স্ট্রিং

function main() {
    var t1 = threading.Thread(function() {
        for (var i = 0; i < 5; i++) {
            threading.currentThread().setData("count", i)
            Log(`setData("count"):`, i)
            Sleep(1000)
        }
    })
    for (var i = 0; i < 5; i++) {
        var count = threading.getThread(t1.id()).getData("count")
        Log(`getData("count"):`, count)
        Sleep(1000)
    }
    t1.join()
}

কী এর মান রেকর্ড করুনcountসমান্তরাল থ্রেড পরিবেশে, এবং তারপর কী মান পড়াcountমূল থ্রেডে।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/setData set}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun

সেটডাটা

দ্যsetData()ফাংশনটি থ্রেডের প্রেক্ষাপটে ভেরিয়েবল সংরক্ষণ করতে ব্যবহৃত হয়।

setData ((কী, মান)

দ্যkeyসংরক্ষিত কী-মানের জোড়ার কী নাম নির্দিষ্ট করতে প্যারামিটার ব্যবহার করা হয়।

চাবি সত্য স্ট্রিং দ্যvalueসংরক্ষিত কী-মানের জোড়ার কী মান নির্দিষ্ট করতে প্যারামিটার ব্যবহার করা হয়।

মূল্য সত্য সিস্টেম দ্বারা সমর্থিত যে কোন ধরনের, যেমন স্ট্রিং, সংখ্যা, bool, বস্তু, অ্যারে, ফাংশন, শূন্য মান ইত্যাদি।

function main() {
    var t1 = threading.Thread(function() {
        threading.currentThread().setData("data", 100)
    })
    Sleep(1000)
    Log(`t1.getData("data"):`, t1.getData("data"))
    t1.join()
}

সমান্তরাল থ্রেডে কী-মানের জোড়া সেট করুন এবং মূল থ্রেডে কী-মানের জোড়া পড়ুন।

function main() {
    threading.mainThread().setData("func2", function(p) {
        Log("func2 p:", p)
    })
    
    var t1 = threading.Thread(function() {
        threading.currentThread().setData("func1", function(p) {
            Log("func1 p:", p)
        })
    
        var func2 = threading.mainThread().getData("func2")
        func2("test2")
    })
    
    Sleep(1000)
    var func1 = t1.getData("func1")
    func1("test1")
    t1.join()
}

এটি ফাংশনগুলিতে কী-মান পাস সমর্থন করে।

ডাটা বৈধ যখন থ্রেড এক্সিকিউট করেনিjoin()ফাংশন (সফল প্রস্থান জন্য অপেক্ষা) এবং কার্যকর করা হয়নিterminate()ফাংশন (শক্তিগতভাবে থ্রেড শেষ) । প্যারামিটার মানvalueএকটি সিরিয়ালাইজযোগ্য ভেরিয়েবল হতে হবে।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}

আইডি

দ্যid()ফাংশন রিটার্ন করতে ব্যবহৃত হয়threadIdবর্তমান মাল্টি-থ্রেডেড অবজেক্ট ইনস্ট্যান্স।

রিটার্ন মানid()ফাংশন হলthreadId.

সংখ্যা

id ((()

function main() {
    var t1 = threading.Thread(function() {
        threading.currentThread().setData("data", 100)
    })
    Log(`t1.id():`, t1.id())
    t1.join()
}

একটি সমান্তরালভাবে চলমান থ্রেড তৈরি করুন এবং আউটপুটthreadIdমূল থ্রেডে এই সমান্তরাল থ্রেডের।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Threads/setData set}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads/event

নাম

দ্যname()বর্তমান মাল্টি-থ্রেডেড অবজেক্ট ইনস্ট্যান্সের নাম ফেরত দিতে ফাংশন ব্যবহার করা হয়।

দ্যname()ফাংশন সমান্তরাল থ্রেডের নাম প্রদান করে।

স্ট্রিং

নাম ((()

function main() {
    var t1 = threading.Thread(function() {
        threading.currentThread().setData("data", 100)
    })
    Log(`t1.name():`, t1.name())  // t1.name(): Thread-1
    t1.join()
}

একটি সমান্তরাল থ্রেড তৈরি করুন এবং মূল থ্রেডে সমান্তরাল থ্রেডের নামটি আউটপুট করুন।

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Threads/setData set}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Thread/eventLoop eventLoop}, {@fun/Threads/Threads/eventLoop eventLoop}, {@fun/Threads/eventLoop eventLoop}, {@fun/Threads

ইভেন্টলুপ

দ্যeventLoop()ফাংশনটি থ্রেড দ্বারা প্রাপ্ত ইভেন্টগুলির জন্য শুনতে ব্যবহৃত হয়।

দ্যeventLoop()ফাংশন বর্তমান থ্রেড দ্বারা প্রাপ্ত ইভেন্ট তথ্য প্রদান করে।ইভেন্ট তথ্য কাঠামো.

বস্তু, শূন্য মান

ইভেন্টলুপ ((() ইভেন্টলুপ (টাইমআউট)

প্যারামিটারtimeoutযদি প্যারামিটারtimeoutএটি 0 এ সেট করা হলে, এটি ফেরত দেওয়ার আগে একটি ইভেন্টের জন্য অপেক্ষা করবে। যদি এটি 0 এর চেয়ে বড় হয় তবে এটি ইভেন্টের অপেক্ষা টাইমআউট সেট করবে। যদি এটি 0 এর চেয়ে কম হয় তবে এটি অবিলম্বে সর্বশেষ ইভেন্টটি ফিরিয়ে দেবে।

টাইমআউট মিথ্যা সংখ্যা

function main() {
    var t1 = threading.Thread(function() {
        while (true) {
            var eventMsg = threading.currentThread().eventLoop()     // Blocking wait
            // 2024-11-14 10:14:18 thread1 eventMsg: {"Seq":1,"Event":"thread","ThreadId":0,"Index":1,"Queue":0,"Nano":1731550458699947000}
            Log(_D(), "thread1 eventMsg:", eventMsg)
        }
    })

    var t2 = threading.Thread(function() {
        while (true) {
            var eventMsg = threading.currentThread().eventLoop(-1)   // Return immediately
            Log(_D(), "thread2 eventMsg:", eventMsg)
            Sleep(5000)
        }
    })

    var t3 = threading.Thread(function() {
        while (true) {
            var eventMsg = threading.currentThread().eventLoop(3000) // Set a 3 second timeout
            Log(_D(), "thread3 eventMsg:", eventMsg)
        }
    })

    t1.postMessage("Hello ", t1.name())
    t2.postMessage("Hello ", t2.name())
    t3.postMessage("Hello ", t3.name())
    t1.join()
    t2.join()
    t3.join()
}

একই সময়ে তিনটি থ্রেড চালান এবং প্রাপ্ত ইভেন্টের তথ্য আউটপুট করুন। যদি টাইমআউট ঘটে বা ফাংশনটি অবিলম্বে ফিরে আসে তবে আউটপুট মানটি শূন্য।

প্রক্রিয়াকরণ প্রক্রিয়াeventLoop()ফাংশন গ্লোবাল ফাংশন হিসাবে একইEventLoop().

{@fun/Threads/Thread/peekMessage peekMessage}, {@fun/Threads/Thread/postMessage postMessage}, {@fun/Threads/Thread/join join}, {@fun/Threads/Thread/terminate terminate}, {@fun/Threads/Thread/getData getData}, {@fun/Threads/Threads/setData setData}, {@fun/Threads/Thread/id id}, {@fun/Threads/Threads/Thread/name name}, {@fun/Threads/name name name}, {@fun/Threads/Thread/name name name}, {@fun/Threads/name name name}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Thread/name name name}, {@fun/Threads/Threads/name name name}, {@fun/Threads/Threads/name name name name name}

থ্রেডিং থ্রেডলক