Sobes.tech
Middle

Swift'te çoklu işleme sırasında hangi kuyruk türleri vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Swift'te çok iş parçacığıyla çalışma için GCD (Grand Central Dispatch) ve Operation Queues kullanılır. Bunlar, düşük seviyeli iş parçacıkları üzerinde soyutlamalar sağlar.

GCD kapsamında aşağıdaki temel kuyruk türleri bulunur:

  1. Sıralı Kuyruklar (Serial Queues):

    • Görevler sırayla, biri diğerinin ardından yürütülür.
    • Görevlerin, verildiği sırayla yürütüleceğini garanti ederler.
    • Ana (main) veya özelleştirilmiş (custom) sıralı kuyruklar olabilirler.
  2. Eşzamanlı Kuyruklar (Concurrent Queues):

    • Görevler aynı anda yürütülebilir.
    • Yürütme sırasını garanti etmezler.
    • İşletim sisteminin kullanılabilir iş parçacıklarını kullanır.
    • Genel (global) veya özelleştirilmiş (custom) paralel kuyruklar olabilirler.

Operation Queues:

  • GCD üzerine inşa edilmiştir.
  • Görevleri (Operation) yönetmek için daha yüksek seviyeli soyutlamalar sağlar.
  • maxConcurrentOperationCount özelliğine bağlı olarak sıralı veya paralel çalışabilirler.
  • İşlemler arasında bağımlılıkları desteklerler.

Kuyruk oluşturma örnekleri:

// Ana sıralı kuyruk
let mainQueue = DispatchQueue.main

// Özelleştirilmiş sıralı kuyruk
let customSerialQueue = DispatchQueue(label: "com.example.myserialqueue")

// Yüksek öncelikli QoS ile global paralel kuyruk
let globalConcurrentQueue = DispatchQueue.global(qos: .userInitiated)

// Özelleştirilmiş paralel kuyruk
let customConcurrentQueue = DispatchQueue(label: "com.example.myconcurrentqueue", attributes: .concurrent)

// Operation Kuyruğu
let operationQueue = OperationQueue()
operationQueue.maxConcurrentOperationCount = 4 // Paralel görev sınırını belirler

Serial ve Concurrent Kuyruklar arasındaki karşılaştırmalı tablo:

Özellik Serial Queue Parallel Queue
Yürütme sırası Sıkı sıralı Paralel (garanti edilmez)
Eşzamanlılık Bir görev bir seferde Birden fazla görev aynı anda
Türler Ana, Özelleştirilmiş Global, Özelleştirilmiş