গো-তে সমগতির ভূমিকা

গো-তে সমগতির ভূমিকা
আপনার মত পাঠকরা MUO সমর্থন করতে সাহায্য করে। আপনি যখন আমাদের সাইটে লিঙ্ক ব্যবহার করে একটি ক্রয় করেন, আমরা একটি অনুমোদিত কমিশন উপার্জন করতে পারি। আরও পড়ুন

কনকারেন্সি আধুনিক সফ্টওয়্যার বিকাশের একটি গুরুত্বপূর্ণ দিক কারণ এটি প্রোগ্রামগুলিকে একযোগে একাধিক কাজ দক্ষতার সাথে পরিচালনা করতে সক্ষম করে। আপনি এমন প্রোগ্রাম লিখতে পারেন যা উন্নত কর্মক্ষমতা, প্রতিক্রিয়াশীলতা এবং সম্পদ ব্যবহারের জন্য বিভিন্ন ক্রিয়াকলাপ চালায়।





দিনের MUO ভিডিও কন্টেন্টের সাথে চালিয়ে যেতে স্ক্রোল করুন

Concurrency হল Go এর দ্রুত গ্রহণের জন্য দায়ী বৈশিষ্ট্যগুলির মধ্যে একটি। সমবর্তী প্রোগ্রামিং-এর জন্য Go-এর অন্তর্নির্মিত সমর্থনকে সোজা বলে মনে করা হয় যখন রেসের অবস্থা এবং অচলাবস্থার মতো সাধারণ সমস্যাগুলি এড়াতে সহায়তা করে।





Go তে সমগতি

Go বিভিন্ন মেকানিজমের মাধ্যমে কনকারেন্সির জন্য জোরালো সমর্থন প্রদান করে, যা এর স্ট্যান্ডার্ড লাইব্রেরি এবং টুলচেইনে উপলব্ধ। প্রোগ্রাম যান গরউটিন এবং চ্যানেলের মাধ্যমে সঙ্গতি অর্জন করুন।





গোরুটিনগুলি হালকা ওজনের, স্বাধীনভাবে কার্য সম্পাদন করে যা একই ঠিকানার স্থানের মধ্যে অন্যান্য গোরুটিনের সাথে একযোগে চলে। গোরুটিনগুলি সুস্পষ্ট থ্রেড পরিচালনা ছাড়াই একাধিক কাজকে একযোগে অগ্রগতির অনুমতি দেয়। গোরুটাইনগুলি অপারেটিং সিস্টেমের থ্রেডের চেয়ে হালকা এবং Go দক্ষতার সাথে হাজার হাজার এমনকি লক্ষ লক্ষ গরউটিন একসাথে চালাতে পারে।

চ্যানেলগুলি হল গরউটিনগুলির মধ্যে সমন্বয় এবং ডেটা ভাগ করে নেওয়ার জন্য যোগাযোগ ব্যবস্থা। একটি চ্যানেল হল একটি টাইপ করা নালী যা গরউটিনকে মান পাঠাতে এবং গ্রহণ করতে দেয়। জাতিগত অবস্থা এবং অন্যান্য সাধারণ সমসাময়িক সমস্যাগুলি প্রতিরোধ করার সময় গরউটিনের মধ্যে নিরাপদ ডেটা ভাগাভাগি নিশ্চিত করতে চ্যানেলগুলি সিঙ্ক্রোনাইজেশন সরবরাহ করে।



গোরুটিন এবং চ্যানেলগুলিকে একত্রিত করে, Go একটি শক্তিশালী এবং সহজবোধ্য একযোগে মডেল সরবরাহ করে যা নিরাপত্তা এবং দক্ষতা বজায় রেখে সমকালীন প্রোগ্রামগুলির বিকাশকে সহজ করে। এই প্রক্রিয়াগুলি আপনাকে সহজেই ব্যবহার করতে সক্ষম করে মাল্টিকোর প্রসেসর এবং অত্যন্ত মাপযোগ্য এবং প্রতিক্রিয়াশীল অ্যাপ্লিকেশন তৈরি করুন।

সমসাময়িক কোড এক্সিকিউশনের জন্য কীভাবে গোরুটিন ব্যবহার করবেন

গো রানটাইম গোরুটিন পরিচালনা করে। Goroutine-এ তাদের স্ট্যাক থাকে, যার সাহায্যে তারা কয়েক কিলোবাইটের প্রাথমিক স্ট্যাকের আকার সহ হালকা ওজনের পদচিহ্ন রাখতে পারে।





Go Runtime দ্বারা Goroutineগুলিকে একাধিক OS থ্রেডে মাল্টিপ্লেক্স করা হয়। Go রানটাইম শিডিয়ুলার দক্ষতার সাথে কাজের চাপ বিতরণ করে, কম OS থ্রেডে একাধিক গরউটিনের একযোগে সঞ্চালনের অনুমতি দিয়ে তাদের উপলব্ধ থ্রেডগুলিতে নির্ধারণ করে।

গোরুটিন তৈরি করা সোজা। আপনি ব্যবহার করবেন যাওয়া goroutines ঘোষণা করার জন্য একটি ফাংশন কল দ্বারা অনুসরণ কীওয়ার্ড।





 func main() { 
    go function1() // Create and execute goroutine for function1
    go function2() // Create and execute goroutine for function2

    // ...
}

func function1() {
    // Code for function1
}

func function2() {
    // Code for function2
}

যখন প্রোগ্রাম আহ্বান করে ফাংশন1() এবং ফাংশন2() সঙ্গে যাওয়া কীওয়ার্ড, গো রানটাইম একই সাথে গোরুটিন হিসাবে ফাংশনগুলি চালায়।

কনসোলে টেক্সট প্রিন্ট করে এমন একটি গরউটিনের ব্যবহারের উদাহরণ এখানে দেওয়া হল:

 package main 

import (
    "fmt"
    "time"
)

func printText() {
    for i := 1; i <= 5; i++ {
        fmt.Println("Printing text", i)
        time.Sleep(1 * time.Second)
    }
}

func main() {
    go printText() // Start a goroutine to execute the printText function concurrently

    // Perform other tasks in the main goroutine
    for i := 1; i <= 5; i++ {
        fmt.Println("Performing other tasks", i)
        time.Sleep(500 * time.Millisecond)
    }

    // Wait for the goroutine to finish
    time.Sleep(6 * time.Second)
}

দ্য প্রিন্ট টেক্সট ফাংশন বারবার একটি দিয়ে কনসোলে কিছু টেক্সট প্রিন্ট করে জন্য লুপ যা প্রতিটি স্টেটমেন্টের মধ্যে এক-সেকেন্ড বিলম্বের পরে পাঁচবার চলে সময় প্যাকেজ .

দ্য প্রধান ফাংশন কল করে একটি গোরুটিন শুরু করে প্রিন্ট টেক্সট যান , যা চালু করে প্রিন্ট টেক্সট একটি পৃথক সমবর্তী গোরুটিন হিসাবে ফাংশন যা ফাংশনটিকে বাকি কোডের সাথে একযোগে চালানোর অনুমতি দেয় প্রধান ফাংশন

কিভাবে ps5 এ প্লে শেয়ার করবেন

অবশেষে, নিশ্চিত করার জন্য যে প্রোগ্রামটি এর আগে প্রস্থান না করে প্রিন্ট টেক্সট গোরুটিন সমাপ্তি, সময়। ঘুম ফাংশন ছয় সেকেন্ডের জন্য মূল গোরুটিনকে বিরতি দেয়। বাস্তব-বিশ্বের পরিস্থিতিতে, আপনি গুরুটিন সম্পাদনের সমন্বয় করতে চ্যানেল বা অপেক্ষা গোষ্ঠীর মতো সিঙ্ক্রোনাইজেশন প্রক্রিয়া ব্যবহার করবেন।

  Goroutines সহ পাঠ্য মুদ্রণের ফলাফল

যোগাযোগ এবং সিঙ্ক্রোনাইজেশনের জন্য চ্যানেল ব্যবহার করা

Goroutines চ্যানেলের মাধ্যমে যোগাযোগ এবং সিঙ্ক্রোনাইজেশনের জন্য অন্তর্নির্মিত সমর্থন রয়েছে, যা প্রথাগত থ্রেডের তুলনায় সমসাময়িক কোড লেখাকে সহজ করে তোলে, যার জন্য প্রায়ই লক এবং সেমাফোরের মতো ম্যানুয়াল সিঙ্ক্রোনাইজেশন প্রক্রিয়ার প্রয়োজন হয়।

আপনি গরউটিনের মধ্যে ডেটা প্রবাহের জন্য পাইপলাইন হিসাবে চ্যানেলগুলিকে ভাবতে পারেন। একটি গুরুটিন চ্যানেলে একটি মান পাঠাতে পারে এবং অন্য একটি গোরুটিন চ্যানেল থেকে সেই মানটি গ্রহণ করতে পারে। এই প্রক্রিয়া নিশ্চিত করে যে ডেটা বিনিময় নিরাপদ এবং সিঙ্ক্রোনাইজ করা হয়।

আপনি ব্যবহার করবেন <- চ্যানেলের মাধ্যমে ডেটা পাঠাতে এবং গ্রহণ করতে অপারেটর।

দুটি গোরুটিনের মধ্যে যোগাযোগের জন্য চ্যানেলের মৌলিক ব্যবহার প্রদর্শনের একটি উদাহরণ এখানে দেওয়া হল:

 func main() { 
    // Create an unbuffered channel of type string
    ch := make(chan string)

    // Goroutine 1: Sends a message into the channel
    go func() {
        ch <- "Hello, Channel!"
    }()

    // Goroutine 2: Receives the message from the channel
    msg := <-ch
    fmt.Println(msg) // Output: Hello, Channel!
}

চ্যানেলে প্রধান ফাংশন নামে একটি আনবাফার চ্যানেল সিএইচ দিয়ে তৈরি তৈরি () ফাংশন প্রথম গোরুটিন বার্তা পাঠায় 'হ্যালো, চ্যানেল!' ব্যবহার করে চ্যানেলের মধ্যে <- অপারেটর, এবং দ্বিতীয় গোরুটিন একই অপারেটর ব্যবহার করে চ্যানেল থেকে বার্তা গ্রহণ করে। অবশেষে, দ প্রধান ফাংশন কনসোলে প্রাপ্ত বার্তা প্রিন্ট করে।

  চ্যানেলের মাধ্যমে প্রিন্টিং বার্তার ফলাফল

আপনি টাইপ করা চ্যানেল সংজ্ঞায়িত করতে পারেন। আপনি সৃষ্টিতে চ্যানেলের ধরন উল্লেখ করবেন। এখানে একটি উদাহরণ যা বিভিন্ন চ্যানেলের প্রকারের ব্যবহার প্রদর্শন করে:

 func main() { 
    // Unbuffered channel
    ch1 := make(chan int)

    // Buffered channel with a capacity of 3
    ch2 := make(chan string, 3)

    // Sending and receiving values from channels
    ch1 <- 42 // Send a value into ch1
    value1 := <-ch1 // Receive a value from ch1

    ch2 <- "Hello" // Send a value into ch2
    value2 := <-ch2 // Receive a value from ch2
}

দ্য প্রধান ফাংশন দুটি চ্যানেল তৈরি করে: ch1 একটি unbuffered পূর্ণসংখ্যা চ্যানেল, যখন ch2 এটি একটি বাফারযুক্ত স্ট্রিং চ্যানেল যার ক্ষমতা 3। আপনি এই চ্যানেলগুলি ব্যবহার করে মান পাঠাতে এবং পেতে পারেন <- অপারেটর (মানগুলি নির্দিষ্ট ধরণের হতে হবে)।

আপনি চ্যানেল ক্রিয়াকলাপগুলির ব্লকিং প্রকৃতির সুবিধা গ্রহণ করে গোরুটিন সম্পাদনের সমন্বয়ের জন্য চ্যানেলগুলিকে সিঙ্ক্রোনাইজেশন প্রক্রিয়া হিসাবে ব্যবহার করতে পারেন।

 func main() { 
    ch := make(chan bool)

    go func() {
        fmt.Println("Goroutine 1")
        ch <- true // Signal completion
    }()

    go func() {
        <-ch // Wait for the completion signal from Goroutine 1
        fmt.Println("Goroutine 2")
    }()

    <-ch // Wait for completion signal from Goroutine 2
    fmt.Println("Main goroutine")
}

দ্য সিএইচ চ্যানেল বুলিয়ান। দুটি গোরুটিন একই সাথে চলে প্রধান ফাংশন Goroutine 1 একটি পাঠিয়ে এটি সম্পূর্ণ হওয়ার সংকেত দেয় সত্য চ্যানেলে মান সিএইচ . Goroutine 2 চ্যানেল থেকে একটি মান গ্রহণ করে সমাপ্তির সংকেতের জন্য অপেক্ষা করছে। অবশেষে, প্রধান গোরুটিন গোরুটিন দুই থেকে সমাপ্তির সংকেতের জন্য অপেক্ষা করে।

আপনি জিনের সাথে গো-তে ওয়েব অ্যাপস তৈরি করতে পারেন

আপনি Go-এর কনকারেন্সি ফিচার ব্যবহার করে Go with Gin-এ হাই-পারফরম্যান্ট ওয়েব অ্যাপ তৈরি করতে পারেন।

আপনি HTTP রাউটিং এবং মিডলওয়্যার দক্ষতার সাথে পরিচালনা করতে জিন ব্যবহার করতে পারেন। ডাটাবেস কোয়েরি, এপিআই কল বা অন্যান্য ব্লকিং অপারেশনের মতো কাজের জন্য গোরুটিন এবং চ্যানেল ব্যবহার করে Go-এর অন্তর্নির্মিত একযোগে সহায়তাকে মূলধন করুন।