NSThread এবং Grand Central Dispatch (GCD) হল iOS এবং macOS অ্যাপ্লিকেশন ডেভেলপমেন্টে মাল্টি-থ্রেডিং এবং অ্যাসিঙ্ক্রোনাস কার্যক্রম পরিচালনা করার জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ টুল। এগুলি অ্যাপ্লিকেশনের কার্যক্ষমতা উন্নত করতে এবং দীর্ঘ সময় নিয়ে কাজ করা অ্যাসিঙ্ক্রোনাস কার্যকলাপ পরিচালনা করতে সহায়তা করে। এখানে NSThread এবং GCD এর ব্যবহার এবং পার্থক্য আলোচনা করা হবে।
1. NSThread
NSThread হল Objective-C তে মাল্টি-থ্রেডিং এর জন্য ব্যবহৃত একটি ক্লাস। এটি বিভিন্ন থ্রেড তৈরি করে, যার মাধ্যমে কোডের বিভিন্ন অংশ একযোগে চালানো যায়। একাধিক থ্রেডের মাধ্যমে একাধিক কাজ সমান্তরালভাবে (parallel) সম্পন্ন করা সম্ভব, যাতে অ্যাপ্লিকেশন দ্রুত ও দক্ষভাবে কাজ করতে পারে।
NSThread এর মৌলিক গঠন:
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(runTask) object:nil];
[thread start];initWithTarget:selector:object:: এই মেথডের মাধ্যমে একটি নতুন থ্রেড তৈরি করা হয়, যেখানেtargetহল থ্রেডের কাজ সম্পাদন করার জন্য ক্লাস,selectorহল সেই কাজের জন্য মেথড এবংobjectহল প্যারামিটার (যদি থাকে)।start: এটি থ্রেডটি চালু করে।
NSThread এর উদাহরণ:
// Method to run on a background thread
- (void) runTask {
NSLog(@"Task started on thread: %@", [NSThread currentThread]);
// Simulate some task
[NSThread sleepForTimeInterval:3];
NSLog(@"Task completed on thread: %@", [NSThread currentThread]);
}
// Create and start the thread
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(runTask) object:nil];
[thread start];এখানে, runTask মেথডটি একটি নতুন থ্রেডে চালানো হবে, যা ৩ সেকেন্ডের জন্য স্লিপ করবে এবং তারপর থ্রেডটি শেষ হবে।
NSThread এর বৈশিষ্ট্য:
- Manual Thread Management: NSThread ব্যবহার করে থ্রেডগুলির ম্যানুয়াল নিয়ন্ত্রণ করা সম্ভব (যেমন থ্রেড স্টপ করা বা ম্যানুয়ালি থ্রেডের অবস্থান চেক করা)।
- কমপ্লেক্স: NSThread সাধারণত কমপ্লেক্স এবং থ্রেডের লাইফসাইকেল ম্যানেজ করতে বেশি কোড লাগে।
2. GCD (Grand Central Dispatch)
GCD (Grand Central Dispatch) হল একটি শক্তিশালী এবং দক্ষ টুল যা অ্যাসিঙ্ক্রোনাস কোড এক্সিকিউশন এবং মাল্টি-থ্রেডিং হ্যান্ডেল করতে ব্যবহৃত হয়। GCD এর মাধ্যমে থ্রেড তৈরি করা হয় না, বরং এটি থ্রেড পুলের মাধ্যমে কাজগুলো পরিচালনা করে, যার ফলে থ্রেড ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে করা যায়। এটি সিস্টেম রিসোর্স ব্যবস্থাপনা (যেমন, CPU কোর) উন্নত করে।
GCD এর মৌলিক গঠন:
- Dispatch Queues: GCD কাজ পরিচালনা করার জন্য Dispatch Queues ব্যবহার করে। দুটি প্রধান ধরনের Dispatch Queue রয়েছে:
- Serial Queue: কাজগুলো একে একে সম্পন্ন হয়।
- Concurrent Queue: কাজগুলো সমান্তরালভাবে (parallel) সম্পন্ন হয়।
- Asynchronous and Synchronous Execution: GCD অ্যাসিঙ্ক্রোনাস এবং সিঙ্ক্রোনাস কোড এক্সিকিউশন সমর্থন করে।
GCD এর উদাহরণ:
Asynchronous Execution (অ্যাসিঙ্ক্রোনাস এক্সিকিউশন):
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Background task
NSLog(@"Task started on background queue");
[NSThread sleepForTimeInterval:3];
NSLog(@"Task completed on background queue");
// Update UI on main thread
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"UI updated on main thread");
});
});এখানে, প্রথমে dispatch_async ব্যবহার করে একটি ব্যাকগ্রাউন্ড থ্রেডে কাজ চালানো হচ্ছে, তারপর UI আপডেট করার জন্য dispatch_async(dispatch_get_main_queue()) ব্যবহার করা হয়েছে, যা মূল থ্রেডে কাজ সম্পন্ন করবে।
Synchronous Execution (সিঙ্ক্রোনাস এক্সিকিউশন):
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Synchronous task
NSLog(@"Task started on global queue");
[NSThread sleepForTimeInterval:3];
NSLog(@"Task completed on global queue");
});এখানে, dispatch_sync ব্যবহার করে একটি সিঙ্ক্রোনাস কাজ সম্পন্ন করা হয়েছে, যেখানে কাজ শেষ না হওয়া পর্যন্ত পরবর্তী কাজ শুরু হবে না।
GCD এর বৈশিষ্ট্য:
- Automatic Thread Management: GCD থ্রেড ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে পরিচালনা করে, তাই ডেভেলপারকে থ্রেড ম্যানেজমেন্টের জন্য অতিরিক্ত কোড লিখতে হয় না।
- Efficiency: GCD সিস্টেম রিসোর্স যেমন CPU কোরের ব্যবহার দক্ষতার সাথে করে।
- Simplified Syntax: GCD এর সিনট্যাক্স অনেক সরল এবং থ্রেড ম্যানেজমেন্টের জন্য অতিরিক্ত কোড লেখার প্রয়োজন হয় না।
- Concurrency Support: GCD স্বয়ংক্রিয়ভাবে concurrent tasks পরিচালনা করতে পারে, যার ফলে অ্যাপ্লিকেশন দ্রুত এবং দক্ষভাবে কাজ করতে পারে।
3. NSThread vs GCD
| বৈশিষ্ট্য | NSThread | GCD |
|---|---|---|
| থ্রেড ম্যানেজমেন্ট | ডেভেলপারকে থ্রেড ম্যানেজ করতে হয় | স্বয়ংক্রিয়ভাবে থ্রেড ম্যানেজমেন্ট হয় |
| কার্যকারিতা | একাধিক থ্রেড তৈরি এবং নিয়ন্ত্রণ করা যায় | একাধিক কাজকে দ্রুত এবং দক্ষভাবে পরিচালনা করা যায় |
| সিনট্যাক্স | জটিল সিনট্যাক্স | সরল এবং পরিষ্কার সিনট্যাক্স |
| থ্রেড পুল | থ্রেড পুল নেই | থ্রেড পুল রয়েছে যা থ্রেড ম্যানেজমেন্ট সহজ করে |
| ব্যবহার | দীর্ঘ কাজ বা স্পেশালাইজড থ্রেড ম্যানেজমেন্ট | অ্যাসিঙ্ক্রোনাস কাজ বা মাল্টি-থ্রেডিং সহজ করতে |
সারাংশ
- NSThread হল একটি শক্তিশালী থ্রেডিং টুল যা থ্রেড ম্যানেজমেন্টে ডেভেলপারকে বেশি নিয়ন্ত্রণ দেয়, তবে এটি বেশি কোড লেখার প্রয়োজন হয় এবং থ্রেড ম্যানেজমেন্টে জটিলতা হতে পারে।
- GCD হল একটি আধুনিক, সহজ এবং দক্ষ মাল্টি-থ্রেডিং টুল যা স্বয়ংক্রিয়ভাবে থ্রেড ম্যানেজমেন্ট করে এবং অ্যাসিঙ্ক্রোনাস কাজের জন্য বেশি কার্যকরী।
দ্বিতীয় ক্ষেত্রে, GCD বেশি ব্যবহৃত হয় কারণ এটি থ্রেড ম্যানেজমেন্ট সহজ করে এবং সিস্টেম রিসোর্স ব্যবহারের কার্যক্ষমতা বৃদ্ধি করে।
Read more