Coroutines তৈরি এবং ব্যবহার করা: coroutine.create, coroutine.resume

Coroutines in Lua (কোরুটিন) - লুয়া (Lua) - Computer Programming

330

লুয়া (Lua) ভাষায় কো-রুটিন (Coroutines) একটি শক্তিশালী ফিচার যা কনকারেন্ট প্রোগ্রামিংয়ে ব্যবহৃত হয়। কো-রুটিনের মাধ্যমে একাধিক কার্যক্রম একসাথে (parallelly) পরিচালনা করা যায়, যেখানে প্রতিটি কো-রুটিন কার্যক্রম নির্দিষ্ট সময়ের জন্য সম্পাদিত হয় এবং পরবর্তীতে পুনরায় চালানো যায়। লুয়া কো-রুটিন তৈরি এবং ব্যবহারের জন্য coroutine.create এবং coroutine.resume ফাংশন ব্যবহার করা হয়।

এই টিউটোরিয়ালে আমরা লুয়া কো-রুটিন তৈরি এবং ব্যবহারের জন্য coroutine.create এবং coroutine.resume ফাংশনগুলির ব্যবহার দেখব।


১. coroutine.create

coroutine.create ফাংশন একটি কো-রুটিন তৈরি করে, যা একটি ফাংশনের আউটপুটকে একটি কো-রুটিন হিসেবে রিটার্ন করে। এই কো-রুটিনটি পরে coroutine.resume ফাংশন দ্বারা চালানো হয়।

সিনট্যাক্স:

co = coroutine.create(function)

এখানে, একটি ফাংশন পাস করা হয় যা কো-রুটিনের কাজ হিসেবে সম্পাদিত হবে।

উদাহরণ:

-- কো-রুটিন তৈরি করা
co = coroutine.create(function ()
    for i = 1, 3 do
        print("Coroutine running: " .. i)
        coroutine.yield()  -- কো-রুটিনকে সাময়িকভাবে বিরতি দেয়া
    end
end)

এখানে, coroutine.create দিয়ে একটি কো-রুটিন তৈরি করা হয়েছে, যেটি একটি লুপে তিনবার "Coroutine running" বার্তা প্রিন্ট করবে এবং প্রতিবার coroutine.yield() দিয়ে থেমে যাবে।


২. coroutine.resume

coroutine.resume ফাংশন কো-রুটিন চালানোর জন্য ব্যবহৃত হয়। এটি একটি কো-রুটিন শুরু করে এবং একে চলমান রাখে যতক্ষণ না coroutine.yield() বা কো-রুটিনের কার্যক্রম সম্পূর্ণ হয়।

সিনট্যাক্স:

status, result = coroutine.resume(co)

এখানে, status বুলিয়ান রিটার্ন করবে যা জানাবে কো-রুটিন সফলভাবে সম্পাদিত হয়েছে কি না এবং result হল কো-রুটিন থেকে রিটার্ন করা মান।

উদাহরণ:

-- কো-রুটিন চালানো
status, result = coroutine.resume(co)  -- প্রথম বার চালানো
print(status)  -- আউটপুট: true

status, result = coroutine.resume(co)  -- দ্বিতীয় বার চালানো
print(status)  -- আউটপুট: true

status, result = coroutine.resume(co)  -- তৃতীয় বার চালানো
print(status)  -- আউটপুট: true

এখানে, coroutine.resume(co) দিয়ে কো-রুটিনটি চালানো হচ্ছে এবং coroutine.yield() দ্বারা থেমে যাওয়ার পর দ্বিতীয় বার চালানো হচ্ছে।


৩. coroutine.yield

coroutine.yield() ফাংশন কো-রুটিনকে সাময়িকভাবে বিরতি দেয় এবং পরে এটি coroutine.resume দ্বারা পুনরায় চালানো হয়। এটি কো-রুটিনের ভিতরে যে কোন জায়গায় ব্যবহার করা যেতে পারে।

উদাহরণ:

-- কো-রুটিন তৈরি
co = coroutine.create(function ()
    print("Start of Coroutine")
    coroutine.yield()  -- প্রথম বিরতি
    print("Resumed first time")
    coroutine.yield()  -- দ্বিতীয় বিরতি
    print("Resumed second time")
end)

-- কো-রুটিন চালানো
coroutine.resume(co)  -- আউটপুট: Start of Coroutine
coroutine.resume(co)  -- আউটপুট: Resumed first time
coroutine.resume(co)  -- আউটপুট: Resumed second time

এখানে, কো-রুটিন প্রথম coroutine.yield() এর মাধ্যমে বিরতি নিচ্ছে এবং পরবর্তী সময়ে coroutine.resume(co) এর মাধ্যমে চালানো হচ্ছে।


৪. কো-রুটিনের স্ট্যাটাস এবং ফলাফল

coroutine.resume একটি স্ট্যাটাস এবং রিটার্ন ভ্যালু প্রদান করে। স্ট্যাটাস হলো বুলিয়ান (true বা false) যা জানায় কো-রুটিন সফলভাবে সম্পাদিত হয়েছে কি না। রিটার্ন ভ্যালু হলো কো-রুটিন থেকে রিটার্ন হওয়া ফলাফল।

উদাহরণ:

co = coroutine.create(function ()
    return "Coroutine result"
end)

status, result = coroutine.resume(co)
print(status)  -- আউটপুট: true
print(result)  -- আউটপুট: Coroutine result

এখানে, কো-রুটিন একটি স্ট্রিং "Coroutine result" রিটার্ন করে এবং coroutine.resume সেই মান গ্রহণ করে।


সারসংক্ষেপ

লুয়া ভাষায় কো-রুটিন অত্যন্ত শক্তিশালী এবং নমনীয়। এটি একাধিক কার্যক্রম একসাথে (concurrently) চালাতে সাহায্য করে। কো-রুটিন তৈরি ও ব্যবহারের জন্য প্রধান ফাংশনগুলো হল:

  • coroutine.create: কো-রুটিন তৈরি করতে ব্যবহৃত হয়।
  • coroutine.resume: কো-রুটিন চালানোর জন্য ব্যবহৃত হয়।
  • coroutine.yield: কো-রুটিনকে সাময়িকভাবে বিরতি দেয়।
  • coroutine.status: কো-রুটিনের স্ট্যাটাস জানায় (যেমন, রানিং, সাসপেন্ডেড, বা ডেড)।

এই ফাংশনগুলির মাধ্যমে আপনি কো-রুটিন ব্যবহার করে কোডের কার্যক্রম গতি বাড়াতে এবং সিঙ্ক্রোনাস কার্যক্রমকে আরও সহজভাবে পরিচালনা করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...