Multi-threading এবং Task Parallelism

Asynchronous Programming (অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং) - ভিজুয়াল বেসিক ডট নেট (VB.Net) - Computer Programming

266

VB.Net-এ Multi-threading এবং Task Parallelism

Multi-threading এবং Task Parallelism হল দুটি গুরুত্বপূর্ণ কনসেপ্ট যা আপনাকে আপনার অ্যাপ্লিকেশনকে আরও দ্রুত এবং কার্যকরী করতে সাহায্য করে, বিশেষত যখন আপনি CPU-ইনটেনসিভ বা I/O-ইনটেনসিভ কাজ করতে চান। VB.Net-এ multi-threading এবং parallelism এর সাহায্যে একাধিক কাজ একসাথে (concurrently) বা পারালালভাবে (in parallel) করা সম্ভব হয়, যা অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করে।


১. Multi-threading

Multi-threading হল একটি প্রোগ্রাম বা অ্যাপ্লিকেশন থেকে একাধিক থ্রেড তৈরি করার প্রক্রিয়া। একটি থ্রেড হল একটি নির্বাহিত একক কাজের ইউনিট, এবং multi-threading এর মাধ্যমে একাধিক কাজ একসাথে (concurrently) চলতে পারে। এর ফলে আপনি একাধিক কাজের মধ্যে পারফরম্যান্স অপটিমাইজ করতে পারেন, যেমন, ইউজার ইন্টারফেস (UI) রেসপন্সিভ রাখা এবং ব্যাকগ্রাউন্ডে কাজ করা।

VB.Net-এ Multi-threading ব্যবহার করা:

VB.Net-এ System.Threading নামস্পেসের মাধ্যমে multi-threading সহজে ব্যবহার করা যায়। এখানে একটি সাধারণ উদাহরণ দেয়া হলো যেখানে দুইটি থ্রেড ব্যবহার করা হয়েছে।

  1. Threading উদাহরণ:
Imports System.Threading

Public Class Form1
    ' থ্রেডের জন্য মেথড
    Private Sub DoWork1()
        For i As Integer = 1 To 5
            Console.WriteLine("Work 1 - " & i)
            Thread.Sleep(1000) ' 1 সেকেন্ড অপেক্ষা
        Next
    End Sub

    ' থ্রেডের জন্য আরেকটি মেথড
    Private Sub DoWork2()
        For i As Integer = 1 To 5
            Console.WriteLine("Work 2 - " & i)
            Thread.Sleep(1000) ' 1 সেকেন্ড অপেক্ষা
        Next
    End Sub

    ' ফর্ম লোড হলে থ্রেড শুরু হবে
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' দুটি আলাদা থ্রেড তৈরি
        Dim thread1 As New Thread(AddressOf DoWork1)
        Dim thread2 As New Thread(AddressOf DoWork2)

        ' থ্রেডগুলি চালু করা
        thread1.Start()
        thread2.Start()
    End Sub
End Class

এখানে:

  • DoWork1 এবং DoWork2 দুটি আলাদা থ্রেডে কাজ করবে।
  • Thread.Sleep(1000) ব্যবহার করা হয়েছে ১ সেকেন্ডের জন্য থ্রেডটি বিরতি দেয়ার জন্য।
  • thread1.Start() এবং thread2.Start() মেথড কল করে থ্রেডগুলোকে চালানো হয়েছে।

আউটপুট:

Work 1 - 1
Work 2 - 1
Work 1 - 2
Work 2 - 2
Work 1 - 3
Work 2 - 3
Work 1 - 4
Work 2 - 4
Work 1 - 5
Work 2 - 5

এখানে, দুইটি থ্রেড একসাথে কাজ করছে, ফলে আউটপুটে Work 1 এবং Work 2 সুত্রক্রমে একসাথে চলে।


২. Task Parallelism

Task Parallelism হল একটি উচ্চ স্তরের পদ্ধতি যা Task ক্লাস ব্যবহার করে মাল্টি-থ্রেডিং সম্পাদন করে। এটি Task Parallel Library (TPL) এর অংশ এবং কোডের পারফরম্যান্স উন্নত করার জন্য ব্যবহৃত হয়। TPL থ্রেডগুলি এবং কাজগুলো পরিচালনা করে এবং অনেকটা সহজভাবে ব্যবহৃত হয়। Task ক্লাস থ্রেডগুলির জন্য একটি উচ্চ স্তরের wrapper প্রদান করে।

Task Parallelism উদাহরণ:

  1. Task ব্যবহার করে কাজ সম্পাদন:
Imports System.Threading.Tasks

Public Class Form1
    ' Task 1 - কাজ
    Private Async Function DoWork1() As Task
        For i As Integer = 1 To 5
            Console.WriteLine("Task 1 - " & i)
            Await Task.Delay(1000) ' 1 সেকেন্ডের জন্য বিরতি
        Next
    End Function

    ' Task 2 - কাজ
    Private Async Function DoWork2() As Task
        For i As Integer = 1 To 5
            Console.WriteLine("Task 2 - " & i)
            Await Task.Delay(1000) ' 1 সেকেন্ডের জন্য বিরতি
        Next
    End Function

    ' Form লোড হলে টাস্ক শুরু হবে
    Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' Task 1 এবং Task 2 একই সময়ে চালানো
        Await Task.WhenAll(DoWork1(), DoWork2())
    End Sub
End Class

এখানে:

  • Task ব্যবহার করা হয়েছে যাতে দুটি কাজ (Task 1 এবং Task 2) একই সময়ে সম্পন্ন হয়।
  • Await এবং Task.Delay(1000) ব্যবহার করা হয়েছে কাজের মধ্যে ১ সেকেন্ডের বিলম্ব সিমুলেট করতে।

আউটপুট:

Task 1 - 1
Task 2 - 1
Task 1 - 2
Task 2 - 2
Task 1 - 3
Task 2 - 3
Task 1 - 4
Task 2 - 4
Task 1 - 5
Task 2 - 5

এখানে, Task.WhenAll() ব্যবহার করে দুটি Task একসাথে (পারালাল) চলানো হয়েছে।


Multi-threading এবং Task Parallelism এর মধ্যে পার্থক্য

বিষয়Multi-threadingTask Parallelism
কোড লেখা সহজঅপেক্ষাকৃত বেশি জটিল, থ্রেড ম্যানেজমেন্ট ম্যানুয়ালি করতে হয়তুলনামূলকভাবে সহজ, TPL দ্বারা থ্রেড পরিচালিত হয়
থ্রেড পরিচালনাথ্রেড তৈরি এবং ম্যানেজমেন্ট ম্যানুয়ালি করতে হয়Task ক্লাসের মাধ্যমে থ্রেড ম্যানেজমেন্ট সহজ হয়
এন্টারপ্রাইজ অ্যাপ্লিকেশনকমপ্লেক্স অ্যাপ্লিকেশনগুলিতে বেশি ব্যবহৃতসাধারণ এবং ছোট অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত
পারফরম্যান্সপ্রচুর থ্রেড হলে সিস্টেমের উপর চাপ পড়তে পারেTPL অধিক কর্মক্ষম এবং অপটিমাইজড থ্রেড ব্যবস্থাপনা প্রদান করে

সারাংশ:

  • Multi-threading: একাধিক থ্রেড তৈরি করে একসাথে একাধিক কাজ করা। Thread ক্লাস ব্যবহার করে করা হয়।
  • Task Parallelism: Task ক্লাস ব্যবহার করে কাজগুলো পারালালভাবে সম্পন্ন করা। এটি সাধারণত আরও কার্যকর এবং সহজ উপায়, যা TPL (Task Parallel Library) দ্বারা পরিচালিত হয়।
  • Task ক্লাস, async/await সহ LINQ ব্যবহার করে কোড লিখতে সহজ এবং পারফরম্যান্সে সুবিধাজনক হয়।
Content added By
Promotion

Are you sure to start over?

Loading...