সমস্ত ডিআইএসপিএটিএচচিএইচকিউ_কিউইউ_পিআরআইআরটি_ এক্স সারি একযোগে সারি (মানে তারা একবারে একাধিক কাজ সম্পাদন করতে পারে), এবং এই অর্থে ফিফো হয় যে প্রদত্ত সারিতে থাকা কাজগুলি "ফার্স্ট ইন, ফার্স্ট আউট" অর্ডার ব্যবহার করে কার্যকর করা শুরু করবে। এটি মূল সারিটির সাথে তুলনায় (ডিসপ্যাচ_জেট_মাইন_কিউ () থেকে) যা একটি ক্রমিক কাত (কাজগুলি ক্রম শুরু হবে এবং যে ক্রমে তারা প্রাপ্ত হবে ক্রম সম্পাদন শেষ করবে)।
সুতরাং, আপনি যদি DISPATCH_QUEUE_PRIORITY_DEFAULT- এ 1000 প্রেরণ_চিন্তা () ব্লক প্রেরণ করেন তবে সেই ক্রিয়াকলাপগুলি আপনি সারিটিতে প্রেরণ করার সাথে সাথে তা কার্যকর করা শুরু করবে। একইভাবে উচ্চ, নিম্ন এবং ব্যাকগ্রাউন্ড সারিগুলির জন্য। আপনি এই কিউগুলির যে কোনওটিতে যা কিছু প্রেরণ করেন তা আপনার মূল অ্যাপ্লিকেশন থ্রেড থেকে দূরে বিকল্প থ্রেডে পটভূমিতে কার্যকর করা হয়। অতএব, এই সারিগুলি ব্যাকগ্রাউন্ড ডাউনলোডিং, সংক্ষেপণ, গণনা ইত্যাদির মতো কার্য সম্পাদনের জন্য উপযুক্ত
নোট করুন যে ফাঁসির আদেশটি প্রতি-সারি ভিত্তিতে ফিফো। সুতরাং আপনি যদি চারটি বিভিন্ন সমবর্তী কাতারে 1000 প্রেরণ_কেন্দ্র () টাস্কগুলি সমানভাবে বিভক্ত করে এবং ব্যাকগ্রাউন্ড, নিম্ন, খেলোয়াড় এবং উচ্চে ক্রমে প্রেরণ করেন (উদাহরণস্বরূপ আপনি শেষ 250 টি কার্য উচ্চতর সারিতে নির্ধারিত করেছেন) তবে খুব সম্ভবত এটিই সম্ভব আপনি যে প্রথম কাজটি শুরু করতে দেখছেন সেটি সেই উচ্চ কাতারে থাকবে কারণ সিস্টেমটি আপনার এই ধারণাটি গ্রহণ করেছে যে সেই কাজগুলিকে যত তাড়াতাড়ি সম্ভব সিপিইউতে পৌঁছানো দরকার।
এটিও নোট করুন যে আমি বলেছি "ক্রম কার্যকর করা শুরু করবে", তবে মনে রাখবেন যে সমবর্তী সারির হিসাবে জিনিসগুলি প্রতিটি কাজের জন্য সময়ের দৈর্ঘ্যের উপর নির্ভর করে ক্রিয়াকলাপ শেষ করতে হবে না।
অ্যাপল অনুসারে:
https://developer.apple.com/library/content/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html
সমান্তরালে চলতে পারে এমন একাধিক টাস্ক থাকাকালীন একটি সমবর্তী প্রেরণ সারিটি দরকারী। সাম্প্রতিক সারিতে এখনও একটি সারি রয়েছে যে এটি প্রথম-ইন, প্রথম-আউট ক্রমে কার্যগুলি প্রযোজ্য; যাইহোক, পূর্ববর্তী কোনও কাজ শেষ হওয়ার আগে একটি সমবর্তী সারির অতিরিক্ত কাজগুলি সঞ্চার করতে পারে। যে কোনও মুহুর্তে সমবর্তী সারির দ্বারা সম্পাদিত কার্যগুলির প্রকৃত সংখ্যা পরিবর্তনশীল এবং আপনার অ্যাপ্লিকেশন পরিবর্তনের শর্ত হিসাবে গতিশীল পরিবর্তন করতে পারে। অনেকগুলি উপাদান সমান্তরাল সারি দ্বারা সম্পাদিত কাজগুলির সংখ্যা, উপলব্ধ কোরগুলির সংখ্যা, অন্যান্য প্রক্রিয়াগুলি দ্বারা পরিচালিত কাজের পরিমাণ এবং অন্যান্য সিরিয়াল প্রেরণের সারিতে কাজের সংখ্যা এবং অগ্রাধিকার সহ প্রভাবিত করে।
মূলত, আপনি যদি সেই 1000 প্রেরণ_কেন্দ্র () ব্লকগুলি একটি ডিফল্ট, উচ্চ, নিম্ন বা ব্যাকগ্রাউন্ড সারিতে প্রেরণ করেন তবে তারা আপনাকে যেভাবে প্রেরণ করেছেন সেগুলি কার্যকর করা শুরু করবে। তবে ছোট কাজগুলি শেষ হওয়ার আগে শেষ হতে পারে। এর পেছনের কারণগুলি যদি সেখানে উপলব্ধ সিপিইউ কোর থাকে বা যদি বর্তমান সারি কাজগুলি গণনাভিত্তিক অ-নিবিড় কাজ সম্পাদন করে থাকে (সুতরাং সিস্টেমটি মনে করে যে এটি মূল সংখ্যা নির্বিশেষে সমান্তরালে অতিরিক্ত কাজ প্রেরণ করতে পারে)।
কনক্যুরেন্সির স্তরটি পুরোপুরি সিস্টেম দ্বারা পরিচালিত হয় এবং এটি সিস্টেম লোড এবং অন্যান্য অভ্যন্তরীণভাবে নির্ধারিত ফ্যাক্টরগুলির উপর ভিত্তি করে। এটি গ্র্যান্ড সেন্ট্রাল ডিসপ্যাচের সৌন্দর্য (প্রেরণ_কেন্দ্রিক (সিস্টেম)) - আপনি কেবল কোড ব্লক হিসাবে আপনার কাজের ইউনিট তৈরি করেন, তাদের জন্য একটি অগ্রাধিকার সেট করুন (আপনি যে সারি পছন্দ করেছেন তার উপর ভিত্তি করে) এবং সিস্টেমটিকে বাকী অংশগুলি পরিচালনা করতে দিন।
সুতরাং আপনার উপরের প্রশ্নের উত্তর দিতে: আপনি আংশিকভাবে সঠিক। আপনি "সেই কোডটি" নির্দিষ্ট অগ্রাধিকার স্তরে বৈশ্বিক সমবর্তী সারিতে সমবর্তী কাজগুলি করতে "জিজ্ঞাসা করছেন"। ব্লকের কোডটি পটভূমিতে কার্যকর করা হবে এবং উপলভ্য সংস্থানসমূহের সিস্টেমের মূল্যায়নের উপর নির্ভর করে সমান্তরালভাবে কোনও অতিরিক্ত (অনুরূপ) কোড কার্যকর করা হবে।
অন্যদিকে "প্রধান" সারিটি (প্রেরণ_সেট_মাইন_কিউ () থেকে) একটি ক্রমিক সারি (সমবর্তী নয়)। মূল কাতারে প্রেরিত টাস্কগুলি সর্বদা ক্রমে কার্যকর হবে এবং সর্বদা ক্রমে শেষ হবে finish এই কাজগুলি ইউআই থ্রেডেও কার্যকর করা হবে সুতরাং এটি আপনার ইউআই আপডেট করার জন্য প্রগতি বার্তা, সমাপ্তির বিজ্ঞপ্তি ইত্যাদির সাথে উপযুক্ত suitable
dispatch_get_global_queue
একটি ভেরিয়েবল ধরণের ভিতরে আপনার নিরাপদdispatch_queue_t myQueue
। এটির আরও পঠনযোগ্য আপনার মাইকিউয়ে আপনার `` dispatch_async`