DEV Community

Nozibul Islam
Nozibul Islam

Posted on

4 4 4 4 4

গোরুটিন (Goroutine) কী?

গোরুটিন (Goroutine) কী?

গোরুটিন (Goroutine) হলো Go প্রোগ্রামিং ভাষার লাইটওয়েট থ্রেড। এটি Go-তে Concurrency বা একাধিক কাজ একসঙ্গে চালানোর জন্য ব্যবহৃত হয়।

গোরুটিনের বৈশিষ্ট্য:

লাইটওয়েট:

  • গোরুটিন সাধারণ থ্রেডের চেয়ে কম মেমোরি ব্যবহার করে।
  • একাধিক গোরুটিন চালানো যায়, কারণ প্রতিটির জন্য স্বতন্ত্র থ্রেড তৈরি হয় না।

স্বতন্ত্র কার্যকলাপ:

  • গোরুটিন স্বাধীনভাবে কাজ করে।
  • প্রতিটি গোরুটিন নিজের স্ট্যাক নিয়ে কাজ করে এবং প্রয়োজন অনুযায়ী এটি বড় হয়।

সহজে তৈরি করা যায়:

  • go কীওয়ার্ড দিয়ে একটি ফাংশনকে গোরুটিন হিসেবে চালানো যায়।

Concurrency সুবিধা:

  • একাধিক গোরুটিন একই সময়ে কাজ করতে পারে, যার ফলে কোড আরও দ্রুত চলে।

কাজের ধরন:

গোরুটিন দিয়ে আপনি মাল্টি-টাস্কিং করতে পারবেন, অর্থাৎ একই সময়ে একাধিক কাজ করাতে পারবেন।

যেমন:

  • ডেটা প্রসেসিং।
  • নেটওয়ার্ক রিকোয়েস্ট।
  • বড় বড় কম্পিউটেশনাল কাজ।

উদাহরণ:

package main

import (
    "fmt"
    "time"
)

func printMessage(message string) {
    for i := 0; i < 5; i++ {
        fmt.Println(message)
        time.Sleep(500 * time.Millisecond) // 500ms অপেক্ষা
    }
}

func main() {
    go printMessage("Hello from Goroutine!") // গোরুটিন
    printMessage("Hello from Main!")         // মেইন থ্রেড
}

Enter fullscreen mode Exit fullscreen mode

Output:
মেইন থ্রেড এবং গোরুটিন থেকে মেসেজ আলাদাভাবে প্রিন্ট হবে। তারা একে অপরকে ব্লক করবে না।

গোরুটিন কেন গুরুত্বপূর্ণ?

Concurrency সহজ করে:

  • গোরুটিনের মাধ্যমে আপনি একাধিক কাজকে আলাদা আলাদা ভাবে চালাতে পারবেন।

দ্রুত ও কার্যকরী:

  • গোরুটিন লাইটওয়েট এবং থ্রেড ম্যানেজমেন্টের ওভারহেড কম থাকে।

নেটওয়ার্ক ও ডেটা প্রসেসিং:

  • নেটওয়ার্ক রিকোয়েস্ট, ডেটাবেস অ্যাক্সেস, বা ব্যাকগ্রাউন্ড প্রসেস সহজে করা যায়।

সারাংশ:
গোরুটিন হলো Go-তে একসাথে অনেক কাজ করার জন্য একটি সহজ, দ্রুত, এবং লাইটওয়েট উপায়।

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series