থ্রেডিং প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ অংশ, যেখানে একাধিক কাজ একই সময়ে সম্পন্ন করার জন্য ব্যবহৃত হয়। প্যাসক্যাল ভাষায় থ্রেডস তৈরি এবং পরিচালনা করার জন্য TThread ক্লাস ব্যবহার করা হয়, যা প্যাসক্যালের System ইউনিটের অংশ।
থ্রেডস একাধিক কার্যক্রম একসাথে সম্পন্ন করতে সহায়তা করে এবং এটি মাল্টি-টাস্কিংয়ের মাধ্যমে প্রোগ্রামের পারফরম্যান্স উন্নত করতে সাহায্য করে। থ্রেড ব্যবহার করার সময়, প্রতিটি থ্রেড আলাদাভাবে কাজ করে এবং একে অপরের কার্যকলাপে হস্তক্ষেপ না করেই একযোগে কাজ করতে পারে।
থ্রেড তৈরি ও পরিচালনা করার মৌলিক ধারণা
১. থ্রেড ক্লাস (TThread): প্যাসক্যালের TThread ক্লাস থ্রেড তৈরি এবং পরিচালনা করার জন্য ব্যবহৃত হয়। TThread ক্লাসের মাধ্যমে থ্রেড তৈরি করা হয় এবং এই ক্লাসে কিছু গুরুত্বপূর্ণ মেথড থাকে যা থ্রেডের কার্যক্রম নিয়ন্ত্রণ করতে সাহায্য করে।
২. থ্রেড প্রাধান্য (Thread Priority): থ্রেডের জন্য একটি প্রাধান্য সেট করা যেতে পারে, যা সিদ্ধান্ত নেয় যে কোন থ্রেড প্রথমে এক্সিকিউট হবে।
৩. থ্রেডের কার্যক্রম: থ্রেড একবার শুরু হলে, এটি একটি নির্দিষ্ট কার্যক্রম সম্পন্ন করতে পারে, যেমন কিছু গণনা করা বা ফাইল পড়া/লেখা করা।
থ্রেড তৈরি করার জন্য ধাপসমূহ
১. থ্রেড ক্লাস তৈরি করা: থ্রেড তৈরির জন্য প্রথমে একটি TThread ক্লাসের উত্তরাধিকারী ক্লাস তৈরি করতে হবে এবং এর মধ্যে Execute মেথডটি ওভাররাইড করতে হবে। Execute মেথডের মধ্যে যে কোডটি থ্রেড চালাবে, তা রাখা হয়।
২. থ্রেড চালু করা: Start মেথডের মাধ্যমে থ্রেড চালু করা হয়।
৩. থ্রেড থামানো: থ্রেডটি শেষ হলে Terminate মেথড ব্যবহার করা হয় থ্রেড বন্ধ করতে।
উদাহরণ: প্যাসক্যালে থ্রেড তৈরি এবং পরিচালনা
program ThreadExample;
uses
SysUtils, Classes;
type
TMyThread = class(TThread)
protected
procedure Execute; override;
end;
{ TMyThread এর Execute মেথডে যা করা হবে, তা উল্লেখ করা হয় }
procedure TMyThread.Execute;
begin
while not Terminated do
begin
writeln('Thread is running');
Sleep(1000); { থ্রেডের কাজ সম্পন্ন হতে সময় দেওয়া হচ্ছে }
end;
end;
var
myThread: TMyThread;
begin
{ থ্রেড তৈরি করা এবং শুরু করা }
myThread := TMyThread.Create(False); { False মানে থ্রেডের জন্য নতুন প্রসেস তৈরি করা হয়নি }
{ মূল থ্রেডে কিছু কাজ করা }
writeln('Main thread is running...');
Sleep(5000); { ৫ সেকেন্ড পর মূল থ্রেড শেষ হবে }
{ থ্রেডটি থামানো }
myThread.Terminate;
myThread.WaitFor; { থ্রেডটি সম্পূর্ণভাবে শেষ না হওয়া পর্যন্ত মূল থ্রেড অপেক্ষা করবে }
writeln('Main thread finished');
end.এখানে কি ঘটছে:
TMyThreadক্লাস:TMyThreadক্লাসTThreadক্লাস থেকে উত্তরাধিকার লাভ করে এবং এরExecuteমেথডটি ওভাররাইড করা হয়।Executeমেথড: থ্রেডটি চালু হলে, এই মেথডের মধ্যে কিছু কার্যক্রম (যেমন প্রতি ১ সেকেন্ড পর "Thread is running" মুদ্রণ করা) সম্পন্ন হবে।Startমেথড: থ্রেডটি চালু করার জন্যCreate(False)ব্যবহার করা হয়েছে, যেখানেFalseমানে হল যে এটি মূল থ্রেডের সঙ্গে সমান্তরালে চলবে।Terminateমেথড: থ্রেডটি সম্পন্ন হলে,Terminateমেথডের মাধ্যমে থ্রেড বন্ধ করা হয়।WaitForমেথড: থ্রেডটি শেষ না হওয়া পর্যন্ত মূল থ্রেড অপেক্ষা করবে।
থ্রেডের ব্যবহারকারী ইন্টারফেস (UI) সঙ্গে সমন্বয়
থ্রেডের কার্যক্রম UI এর সাথে সমন্বয় করার জন্য মূল থ্রেডের মধ্যে ইন্টারফেস আপডেট করার জন্য কিছু নির্দিষ্ট সিঙ্ক্রোনাইজেশন পদ্ধতি ব্যবহার করা হয়। উদাহরণস্বরূপ, GUI অ্যাপ্লিকেশনে থ্রেডের মাধ্যমে কাজ করার পর UI আপডেট করতে পারেন।
নির্দিষ্ট UI ইভেন্টে থ্রেড ব্যবহার করার জন্য প্যাসক্যালের কিছু মেথড:
- Synchronize: এটি একটি থ্রেডের কার্যক্রম UI থ্রেডে চালানোর জন্য ব্যবহৃত হয়।
- Queue: এটি থ্রেডের কার্যক্রম প্রধান থ্রেডে পাঠানোর জন্য ব্যবহৃত হয়।
সারাংশ
প্যাসক্যাল ভাষায় থ্রেড ব্যবহারের মাধ্যমে একাধিক কার্যক্রম একসাথে চালানো সম্ভব, যা প্রোগ্রামের পারফরম্যান্স উন্নত করতে সাহায্য করে। TThread ক্লাস এবং এর Execute মেথড ব্যবহার করে নতুন থ্রেড তৈরি করা যায় এবং Start, Terminate, এবং WaitFor মেথড দিয়ে থ্রেড চালানো এবং থামানো হয়। থ্রেডিং ব্যবহারের সময়, UI বা অন্যান্য কার্যক্রমের মধ্যে সিঙ্ক্রোনাইজেশন নিশ্চিত করা জরুরি, বিশেষ করে GUI অ্যাপ্লিকেশনগুলির ক্ষেত্রে।
Read more