Sobes.tech
Junior

Ի՞նչ է Dispatch հերթը։

sobes.tech AI

Պատասխան AI-ից

Dispatch հերթը թեթև օբյեկտ է, որը ուղարկում է առաջադրանքներ ասինխրոն կամ սինխրոն կատարելու համար GCD (Grand Central Dispatch)-ում:

Հերթերի տեսակները՝

  1. Սերիական (Serial): Կատարում է առաջադրանքները խիստ հերթականությամբ, մեկը մյուսի հետևից:
  2. Համաժամ (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-ны փակելու առանց:
  • Համատեղ ռեսուրսների մուտքի կառավարում (սերիական հերթերը ծառայում են սինխրոնիզացիայի համար):
  • Հաշվարկների համաժամեցում։