টাস্ক প্যারালাল লাইব্রেরি (Task Parallel Library বা TPL) সি# এ একটি শক্তিশালী কনকারেন্সি লাইব্রেরি, যা সমান্তরাল প্রোগ্রামিং (Parallel Programming) সহজ করে। এটি .NET ফ্রেমওয়ার্কের System.Threading.Tasks
নেমস্পেসের অংশ এবং টাস্ক-ভিত্তিক কাজগুলো সমান্তরালে চালানোর জন্য ডিজাইন করা হয়েছে। TPL এর মাধ্যমে প্যারালাল প্রোগ্রামিংয়ের জটিলতা কমানো যায় এবং প্রোগ্রামের কার্যক্ষমতা বৃদ্ধি করা যায়।
Task
ক্লাস দিয়ে টাস্ক তৈরি করা হয় এবং Start()
মেথড বা Task.Run
দিয়ে টাস্ক চালানো যায়।
using System;
using System.Threading.Tasks;
public class Program
{
public static void Main()
{
Task task = new Task(() =>
{
for (int i = 1; i <= 5; i++)
{
Console.WriteLine("Task running: " + i);
}
});
task.Start();
task.Wait(); // টাস্ক শেষ হওয়ার জন্য অপেক্ষা
Console.WriteLine("Task completed.");
}
}
Task.Run
একটি নতুন টাস্ক তৈরি এবং চালানোর সহজ পদ্ধতি।
using System;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
Task task = Task.Run(() =>
{
for (int i = 1; i <= 5; i++)
{
Console.WriteLine("Running task: " + i);
}
});
await task; // টাস্ক শেষ হওয়া পর্যন্ত অপেক্ষা
Console.WriteLine("Task is complete.");
}
}
Task.WhenAll এবং Task.WhenAny মেথডগুলো একাধিক টাস্ক চালানো এবং একসাথে পরিচালনা করতে ব্যবহৃত হয়।
using System;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
Task task1 = Task.Run(() => Console.WriteLine("Task 1"));
Task task2 = Task.Run(() => Console.WriteLine("Task 2"));
Task task3 = Task.Run(() => Console.WriteLine("Task 3"));
await Task.WhenAll(task1, task2, task3); // সব টাস্ক শেষ হওয়া পর্যন্ত অপেক্ষা
Console.WriteLine("All tasks completed.");
}
}
using System;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
Task task1 = Task.Delay(2000); // ২ সেকেন্ড অপেক্ষা
Task task2 = Task.Delay(1000); // ১ সেকেন্ড অপেক্ষা
await Task.WhenAny(task1, task2); // যেকোনো একটি টাস্ক শেষ হলে পরবর্তী কোড চালাবে
Console.WriteLine("One of the tasks completed.");
}
}
Parallel.For এবং Parallel.ForEach সমান্তরালে লুপ চালানোর জন্য ব্যবহৃত হয়।
using System;
using System.Threading.Tasks;
public class Program
{
public static void Main()
{
Parallel.For(1, 6, i =>
{
Console.WriteLine("Parallel Task: " + i);
});
Console.WriteLine("Parallel.For loop completed.");
}
}
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
public class Program
{
public static void Main()
{
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
Parallel.ForEach(names, name =>
{
Console.WriteLine("Processing: " + name);
});
Console.WriteLine("Parallel.ForEach loop completed.");
}
}
কখনো কখনো নির্দিষ্ট শর্তে টাস্ক বন্ধ করা প্রয়োজন হতে পারে। TPL এ CancellationToken
এর মাধ্যমে টাস্ক ক্যান্সেল করা যায়।
using System;
using System.Threading;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
Task task = Task.Run(() =>
{
for (int i = 1; i <= 5; i++)
{
if (token.IsCancellationRequested)
{
Console.WriteLine("Task canceled.");
return;
}
Console.WriteLine("Task running: " + i);
Thread.Sleep(1000);
}
}, token);
await Task.Delay(2000); // কিছু সময় অপেক্ষা
cts.Cancel(); // টাস্ক ক্যান্সেল
await task;
Console.WriteLine("Main task completed.");
}
}
Task Parallel Library সি# এ কনকারেন্সি এবং প্যারালালিজমকে সহজ এবং কার্যকর করে তোলে। এটি ব্যবহার করে কার্যক্ষমতা বৃদ্ধি, সমান্তরালে কাজ পরিচালনা, এবং আরও দ্রুত সাড়া প্রদান করা সম্ভব হয়।
আরও দেখুন...