Middle
Дар Grand Central Dispatch (GCD) кадом навбатҳо мавҷуданд?
sobes.tech AI
Ҷавоб аз AI
ב-GCD משמשים ארבעה סוגים עיקריים של תורים:
-
תור ראשי (Main Queue):
- תור סידורי.
- משמש לביצוע משימות בזרם הראשי של היישום (עדכוני UI, עיבוד אירועים).
- תמיד אחת ליישום.
-
תורים גלובליים תחרותיים (Global Concurrent Queues):
- תורים תחרותיים.
- מסופקים על ידי המערכת.
- יש להם רמות שונות של עדיפות איכות השירות (Quality of Service - QoS).
- יכולים לבצע מספר משימות במקביל.
-
תורים מותאמים אישית סידוריים (Custom Serial Queues):
- תורים סידוריים שנוצרים על ידי המפתח.
- מבצעים משימות בסדר, אחת אחרי השנייה.
- אידיאליים לניהול גישה למשאבים (סינכרון).
-
תורים מותאמים אישית תחרותיים (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 |
המערכת קובעת עדיפות. |