Sobes.tech
Middle

Дар Grand Central Dispatch (GCD) кадом навбатҳо мавҷуданд?

sobes.tech AI

Ҷавоб аз AI

ב-GCD משמשים ארבעה סוגים עיקריים של תורים:

  1. תור ראשי (Main Queue):

    • תור סידורי.
    • משמש לביצוע משימות בזרם הראשי של היישום (עדכוני UI, עיבוד אירועים).
    • תמיד אחת ליישום.
  2. תורים גלובליים תחרותיים (Global Concurrent Queues):

    • תורים תחרותיים.
    • מסופקים על ידי המערכת.
    • יש להם רמות שונות של עדיפות איכות השירות (Quality of Service - QoS).
    • יכולים לבצע מספר משימות במקביל.
  3. תורים מותאמים אישית סידוריים (Custom Serial Queues):

    • תורים סידוריים שנוצרים על ידי המפתח.
    • מבצעים משימות בסדר, אחת אחרי השנייה.
    • אידיאליים לניהול גישה למשאבים (סינכרון).
  4. תורים מותאמים אישית תחרותיים (Custom Concurrent Queues):

    • תורים תחרותיים שנוצרים על ידי המפתח.
    • יכולים לבצע מספר משימות במקביל.
    • מאפשרים שליטה טובה יותר על ביצוע המשימות בהשוואה לתורים גלובליים תחרותיים.

דוגמאות ליצירת תורים:

// תור ראשי
let mainQueue = DispatchQueue.main

// אחת מהתורים הגלובליים התחרותיים (עם עדיפות גבוהה)
let globalHighPriorityQueue = DispatchQueue.global(qos: .userInitiated)

// תור סידורי מותאם אישית
let customSerialQueue = DispatchQueue(label: "com.myapp.serialqueue")

// תור תחרותי מותאם אישית
let customConcurrentQueue = DispatchQueue(label: "com.myapp.concurrentqueue", attributes: .concurrent)

עדיפויות QoS לתורים גלובליים:

עדיפות QoS תיאור
.userInteractive משימות הקשורות לממשק המשתמש (מענה ללחיצות).
.userInitiated משימות שהמשתמש יזם (טעינת תוכן לפי בקשה).
.default עדיפות ברירת מחדל, בין .userInitiated ל-.utility.
.utility משימות רקע ארוכות (הורדת קבצים).
.background משימות עם עדיפות נמוכה, שאינן תלויות במשתמש.
.unspecified המערכת קובעת עדיפות.