Junior
Ի՞նչ է Dispatch հերթը։
sobes.tech AI
Պատասխան AI-ից
Dispatch հերթը թեթև օբյեկտ է, որը ուղարկում է առաջադրանքներ ասինխրոն կամ սինխրոն կատարելու համար GCD (Grand Central Dispatch)-ում:
Հերթերի տեսակները՝
- Սերիական (Serial): Կատարում է առաջադրանքները խիստ հերթականությամբ, մեկը մյուսի հետևից:
- Համաժամ (Concurrent): Կատարում է առաջադրանքները միաժամանակ (այնքանով, որքան թույլ է տալիս համակարգը և մատչելի միջուկները):
Հերթ ստանալու եղանակները՝
- Հիմնական հերթ (Main Queue): Սերիական հերթ, կապված ծրագրի հիմնական հոսքի հետ (UI):
let mainQueue = DispatchQueue.main - Աշխարհային համաժամական հերթեր (Global Concurrent Queues): Տրամադրվում են համակարգից տարբեր QoS առաջնահերթություններով:
let userInitiatedQueue = DispatchQueue.global(qos: .userInitiated) - Անհատական հերթեր: Կարող են լինել ինչպես սերիական, այնպես էլ համաժամ:
let customSerialQueue = DispatchQueue(label: "com.example.mySerialQueue") let customConcurrentQueue = DispatchQueue(label: "com.example.myConcurrentQueue", attributes: .concurrent)
Առաջադրանքների ուղարկում՝
async: Ավելացնում է առաջադրանքը հերթին ասինխրոն կատարելու համար, առանց ներկայիս հոսքը փակելու:customSerialQueue.async { // Ասինխրոն առաջադրանք }sync: Ավելացնում է առաջադրանքը հերթին սինխրոն կատարելու համար, փակելով ներկայիս հոսքը մինչև առաջադրանքի ավարտը:ՕգտագործեքcustomSerialQueue.sync { // Սինխրոն առաջադրանք }syncզգուշությամբ, հատկապես հիմնական հերթում, որպեսզի խուսափեք deadlock-ներից:
Հայտառություններ՝
- Ֆոնային առաջադրանքների կատարում UI-ны փակելու առանց:
- Համատեղ ռեսուրսների մուտքի կառավարում (սերիական հերթերը ծառայում են սինխրոնիզացիայի համար):
- Հաշվարկների համաժամեցում։