প্রধান কাতারে একটি ব্লক প্রেরণ করা সাধারণত একটি ব্যাকগ্রাউন্ড সারি থেকে কিছু পটভূমি প্রক্রিয়াকরণ সমাপ্ত হয়েছে যে সিগন্যাল করার জন্য সম্পন্ন হয় উদাহরণস্বরূপ
- (void)doCalculation
{
//you can use any string instead "com.mycompany.myqueue"
dispatch_queue_t backgroundQueue = dispatch_queue_create("com.mycompany.myqueue", 0);
dispatch_async(backgroundQueue, ^{
int result = <some really long calculation that takes seconds to complete>;
dispatch_async(dispatch_get_main_queue(), ^{
[self updateMyUIWithResult:result];
});
});
}
এই ক্ষেত্রে, আমরা একটি ব্যাকগ্রাউন্ড সারিতে একটি দীর্ঘ গণনা করছি এবং যখন গণনাটি সম্পূর্ণ হবে তখন আমাদের ইউআই আপডেট করতে হবে। সাধারণত ইউআই আপডেট করার জন্য মূল সারিটি থেকে কাজ করতে হয় তাই আমরা দ্বিতীয় নেস্টেড ডিসপ্যাচ_সিএনসিএন ব্যবহার করে মূল কাতারে ফিরে 'সিগন্যাল' করি।
সম্ভবত অন্যান্য উদাহরণ রয়েছে যেখানে আপনি মূল কাতারে ফিরে প্রেরণ করতে চাইতে পারেন তবে এটি সাধারণত এইভাবে করা হয় অর্থাত্ একটি ব্লক থেকে নেস্টেড কোনও ব্যাকগ্রাউন্ডের সারিতে প্রেরণ করা হয়।
- পটভূমি প্রক্রিয়াকরণ সমাপ্ত -> ইউআই আপডেট করুন
- পটভূমি সারি -> সিগন্যাল প্রধান সারিতে পরবর্তী অংশ শুরু করার জন্য প্রক্রিয়াকৃত ডেটার অংশ
- ব্যাকগ্রাউন্ড কাতারে আগত নেটওয়ার্ক ডেটা -> সিগন্যাল প্রধান সারিটি যে বার্তাটি এসেছে
- ইত্যাদি
কেন আপনি প্রধান কাতারেটি থেকে প্রধান কাতারে প্রেরণ করতে চাইতে পারেন ... ঠিক আছে, আপনি সাধারণত এটি না করতেন তবে পরের বার রান লুপের জন্য কিছু কাজ করার সময় নির্ধারণ করার জন্য আপনি এটি করতে পারেন।