ПредишенСледващото

Паралелизъм Cocoa среда, Mac OS, IOS

Изпращане опашки (изпращане Опашките).

Grand Central Dispatch (ГРУ) Подаване на опашката е мощен инструмент за осъществяване на задачи. Dispatch опашка позволява да се изпълни код proizvolnyt blokb като асинхронно или синхронно по отношение на нишка призвание. Можете да използвате опашката за изпращане за извършване на почти всички задачи, които би трябвало да са в отделни теми. опашки изпращане предимство, тъй като те са по-лесни за използване и много по-ефективни в изпълнението на тези задачи от съответния многонишковите код.

Dispatch опашка е обект като структура, която управлява задачите, които го съставляват. Всички изпратени опашки в структурата на данни в съответствие с принципа: първо, първа изходяща. По този начин, задачи, които да прибавите към опашка, винаги започне в същия ред, в който са добавени. GCD осигурява известна изпращане на опашка за вас автоматично, докато други може да създадете за конкретна цел. Таблица 3-1 изброява видовете достъпно изпращане на опашка за вашето приложение и описание на това как да ги използвате по-нататък.

Таблица 3-1 Видове изпращат опашка

Последователно опашка (известен също като частни диспечерски опашки) изпълнява една задача в даден момент в реда, в който те ще бъдат добавени в списъка на чакащите. Актуални задачи, изпълнявани на различни теми (които могат да се различават от задача задача), които се контролират чрез изпращане на линия. Последователни завои често се използват за синхронизиране на достъпа до определен ресурс.

Можете да създадете колкото се може повече последователни изблици, колкото е необходимо, и всяка опашка работи в същото време на всички други опашки. С други думи, ако създадете четири последователни завои, всеки ход изпълнява само една задача в даден момент, но до четири задачи все още могат да се извършват едновременно, по един от всяка опашка. За информация как да се създаде сериен всичко виждам. "Създаване Serial опашка за изпращане."

Паралелно опашка (известен също като вид глобален изпращане опашка (глобално изпращане опашката)) изпълнява една или повече задачи по едно и също време, но проблемът все още nachanaet в реда, в който са били добавени към опашката. Текущото изпълнение на задачите, изпълнявани на различни теми, които се администрират от изпращане на опашката. Точният брой на изпълняваните задачи в момента е променлива и зависи от условията на системата.

Вие не можете да създадете свой собствен успоредно на опашката за изпращане. Вместо това, има три глобалната опашка за едновременно използване в молбата си. За повече информация за това как да получите глобален едновременно опашка см. В "За световната изпращане опашка паралел".

Главна изпращане опашка

Основно място на изпращане на глобално достъпен сериен опашка, която изпълнява задачата на основната нишка приложение. Всичко това работи с основния цикъл на заявлението (ако има такива), за да алтернативните задачи в съответствие с изпълнението на други източници на събития, свързани с основния цикъл на приложение. Тъй като тя работи на основните приложения на потока, най-вече, често се използва като ключов момент за синхронизация за приложението.

Въпреки че не трябва да се създаде голямо място на изпращане, трябва да се уверите, че вашата кандидатура работи правилно. За повече информация за това, как това място се управлява см. В "Изпълняване на задачи в основната нишка".

Когато става въпрос за добавяне на паралелизъм на заявление, изпращане изблици осигурява редица предимства пред потока. Най-прекият предимство е простотата на модела програмиране на работната опашка. С потоци, трябва да напишете кода за задачата, която искате да изпълните, и за създаване и управление на потока от себе си. Изпращането на свой ред да ви позволи да се съсредоточи върху задачата, която наистина искате да направите, без да се притеснявате за създаването и управлението на конци. Вместо това, системата обработва всички създаването и управлението на потоците за вас. Предимството е, че системата може да управлява потока много по-ефективно, отколкото всеки един ап някога можеше-да бъде. Системата може да мащабирате брой нишки динамично въз основа на наличните ресурси и текущото състояние на системата. В допълнение, системата обикновено е по-бърз възможност за изпълнението си, отколкото си, ако сте създали сами поток.

Докато може би си мислите, че да се пренапише кода за изпращане на опашката ще бъде трудно, често е по-лесно да се напише код, за да изпратите на опашката, пишете кода за потока. Ключови - писане на код за задачи за развитие, които са самостоятелни и могат да работят в асинхронен режим. (В действителност, това важи и за потоци и за изпращане на опашки). Въпреки това, в полза на изпращане на опашката е предвидимост. Ако имате две задачи, които имат достъп до една и съща споделен ресурс, но работят на различни теми, една нишка може да се промени на ресурса на първо място, и ще трябва да се използва за заключване, че и двете цели не са се променили този ресурс в същото време. При изпращане на опашка, можете да добавите дадена мисия на сериен изпращане опашка само за една задача да променя ресурси във всеки даден момент. Този тип синхронизация опашка базиран е по-ефективен от ключалката, защото ключалката винаги изискват скъпи ядро ​​капан и обжалваното в безспорните случаи, а на опашката изпращане оперира основно в процеса на кандидатстване пространство и само той причинява на ниво ядро, където абсолютно необходимо.

Въпреки, че това ще бъде правилно да се каже, че двете неща, опериращи в последователни завои, може да не работят в същото време, трябва да се помни, че ако две нишки вземат заключване в същото време, всеки паралелизъм предлагат потоци е изгубен или значително намалени. Освен това, моделът на стрийминг изисква създаването на два потока, които заемат ядра, така и в употреба памет. Управителят на опашка не плаща цената за разпределение на паметта за своите реки и потоци, които те употребяват запазва зает и не е блокиран.

Опашки задължителни технология

В допълнение към изпращането на опашка, Grand Central Dispatch осигурява няколко технологии, които използват опашки, за да помогне за управлението на кода. Таблица 3-2 изброява тези технологии, както и линкове, където можете да научите повече за тях.

Таблица 3-2 технологии, които използват опашката за изпращане

Подкрепете проекта - споделете линка, благодаря!