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

تار

Threadاشیاء کی طرف سے پیدا یا واپس کیا جا سکتا ہےthreading.Thread(), threading.getThread(), threading.mainThread()، اورthreading.currentThread().

peekپیغام

کےpeekMessage()ایک موضوع سے ایک پیغام حاصل کرنے کے لئے استعمال کیا جاتا ہے.

کےpeekMessage()فنکشن موجودہ تھریڈ آبجیکٹ سے منسلک تھریڈ کے ذریعہ موصولہ پیغام کو لوٹاتا ہے۔

سٹرنگ، نمبر، بول، آبجیکٹ، صف، null value اور نظام کی حمایت کی دیگر اقسام

peekMessage() peekMessage ((ٹائم آؤٹ)

پیرامیٹرtimeoutis the timeout setting. یہ پیرامیٹر کے ذریعہ طے شدہ ملی سیکنڈ کی تعداد کو بلاک کرے گا اور انتظار کرے گا اور ڈیٹا واپس کرے گا۔ اگر کوئی ڈیٹا نہیں ہے اور ٹائم آؤٹ حد سے زیادہ ہے تو ، ایک null قدر واپس کردی جائے گی۔ اگرtimeout0 پر مقرر کیا جاتا ہے یاtimeoutپیرامیٹر منظور نہیں کیا جاتا ہے، اس کا مطلب یہ ہے کہ عمل بلاک اور انتظار کریں گے جب تک چینل سے ڈیٹا موصول نہیں ہوتا.timeout- 1 پر مقرر کیا گیا ہے، اس کا مطلب یہ ہے کہ عمل کو فوری طور پر ڈیٹا کو روکنے اور واپس نہیں کرے گا. اگر کوئی ڈیٹا نہیں ہے تو، ایک null قدر واپس آ جائے گی.

ٹائم آؤٹ غلط نمبر

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/join 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}، {@fun/Threads/eventLoop}،

پوسٹپیغام

کےpostMessage()ایک موضوع کو ایک پیغام بھیجنے کے لئے استعمال کیا جاتا ہے.

پوسٹپیغام (msg)

پیرامیٹرmsgہے کہ پیغام بھیجا جائے.

پی ایس جی سچ نظام کی طرف سے حمایت کی کسی بھی قسم، جیسے تار، نمبر، بول، اعتراض، صف، تقریب، صفر قدر، وغیرہ.

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 set}، {@fun/Threads/Thread/id id}، {@fun/Threads/Threads/Thread/name name join}، {@fun/Threads/Thread/terminate terminate}، {@fun/Threads/Thread/eventLoop eventLoop}، {@fun/Threads/eventLoop eventLoop}، {@fun/Threads/Threads/eventLoop eventLoop}، {@fun/Threads/Threads/eventLoop eventLoop}، {@fun/Threads/eventLoop eventLoop}، {@fun/Threads/eventLoop}، {@fun/

شامل ہونا

کےjoin()فنکشن کا استعمال تھریڈ کے باہر نکلنے اور سسٹم کے وسائل کی بازیافت کے انتظار میں کیا جاتا ہے۔

کےThreadRetچیزعملدرآمد کے نتائج کے بارے میں اعداد و شمار پر مشتمل ہے. خصوصیات میں مندرجہ ذیل شامل ہیں:

  • id: Thread ID
  • ختم: کیا دھاگے کو ختم کرنے کے لئے مجبور کیا جاتا ہے.
  • گزرا ہوا: نینو سیکنڈ میں دھاگے کا چلنے کا وقت۔
  • 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/Threads/Thread/name name}، {@fun/Threads/Threads/Thread/eventLoop eventLoop}، {@fun/Threads/Thread/eventLoop eventLoop}

ختم کرنا

کے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/Threads/Thread/id id}، {@fun/Threads/Threads/Thread/name name}، {@fun/Threads/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/Threads/eventLo

getData حاصل کریں

کےgetData()تقریب تھریڈ ماحول میں ریکارڈ متغیرات تک رسائی کے لئے استعمال کیا جاتا ہے. ڈیٹا درست ہے جب تھریڈ کو عملدرآمد نہیں کیا ہےjoin()تقریب (کامیابی سے باہر نکلنے کے لئے انتظار کر رہا ہے) اور عملدرآمد نہیں کیا ہےterminate()فنکشن (فورس کے ذریعے دھاگے کو ختم کرنا) ۔

کےgetData()تقریب کی کلید کی قیمت کے مساوی لوٹاتا ہےkeyموجودہ تھریڈ سیاق و سباق میں ذخیرہ کردہ کلیدی قدر جوڑی میں پیرامیٹر.

سٹرنگ، نمبر، بول، آبجیکٹ، صف، 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}، {@fun/Thre

سیٹ ڈیٹا

کےsetData()تقریب تھریڈ سیاق و سباق میں متغیرات کو ذخیرہ کرنے کے لئے استعمال کیا جاتا ہے.

setData ((کلید، قدر)

کےkeyپیرامیٹر استعمال کیا جاتا ہے ذخیرہ شدہ کلید قدر جوڑی کے کلید نام کی وضاحت کرنے کے لئے.

چابی سچ سٹرنگ کےvalueپیرامیٹر استعمال کیا جاتا ہے ذخیرہ شدہ کلید-قدر جوڑی کی کلید کی قیمت کی وضاحت کرنے کے لئے.

قیمت سچ نظام کی طرف سے حمایت کی کسی بھی قسم، جیسے تار، نمبر، بول، اعتراض، صف، تقریب، صفر قدر، وغیرہ.

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ایک serializable متغیر ہونا ضروری ہے.

{@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/id id}، {@fun/Threads/Thread/name name name}، {@fun/Threads/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/Threads/eventLoop eventLoop}،

آئی ڈی

کےid()فنکشن واپس کرنے کے لئے استعمال کیا جاتا ہےthreadIdموجودہ multithreaded اعتراض مثال کے.

کی واپسی کی قیمت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/thread/eventLoop eventLoop}، {@fun/Threads/eventLoop eventLoop}، {@fun/threads

نام

کےname()موجودہ multithreaded اعتراض مثال کا نام واپس کرنے کے لئے استعمال کیا جاتا ہے.

کے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/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/Thread/eventLoop eventLoop}، {@fun/Threads/Thread/eventLoop eventLoop}، {

ایونٹ لوپ

کےeventLoop()تقریب موضوع کی طرف سے موصول ہونے والے واقعات کے لئے سننے کے لئے استعمال کیا جاتا ہے.

کےeventLoop()تقریب موجودہ موضوع کی طرف سے موصول ہونے والے واقعہ کی معلومات واپس کرتا ہے.واقعہ کی معلومات کی ساخت.

آبجیکٹ، صفر قدر

ایونٹ لوپ ((() ایونٹ لوپ (ٹائم آؤٹ)

پیرامیٹرtimeoutملی سیکنڈ میں ٹائم آؤٹ کی ترتیب ہے. اگر پیرامیٹرtimeout0 پر مقرر کیا گیا ہے تو ، یہ واپسی سے پہلے کسی ایونٹ کے ہونے کا انتظار کرے گا۔ اگر یہ 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()
}

تین تھریڈز کو بیک وقت چلائیں اور موصولہ واقعہ کی معلومات کو آؤٹ پٹ کریں۔ اگر ٹائم آؤٹ ہوتا ہے یا فنکشن فوری طور پر واپس آجاتا ہے تو ، آؤٹ پٹ ویلیو null ہے۔

پروسیسنگ میکانزم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}، {@fun/Threads/Thread/name name name}،

گھسائی ہوئی تھریڈلاک