İçeriğe geç

DispatchWorkItem kullanımı

Merhabalar bu yazımda İOS ile Thread işlem yardımcısı DispatchWorkItem sınıfını nasıl kullanırız bunu göstereceğim.

Thread yapıları mobil ve diğer platform sistemlerinde çok önemli bir yere sahip. İOS ile GCD işlemleri gerçekleştirirken ayrı ayrı workerler çalıştırıp bunları duruma göre durdurabiliriz. Bu işlemi GCD (Grand Central Dispatch) tarafında DispatchWorkItem ile gerçekleştiriyoruz.

Aşağıda yazdığım örneği inceleyebilir ve kullanımını görebilirsiniz.

import UIKit

class testVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    func testWorker() {
        
        let globolQ = DispatchQueue.global()
        var work:DispatchWorkItem!
        
        
        work = DispatchWorkItem(block: { 
            for i in 0...10_000_000 {
                if work.isCancelled {
                    break
                }
                print(i)
            }
        })
        
        
        globolQ.async(execute: work)
        
        globolQ.asyncAfter(deadline: .now() + 5) {
            print("BREAK")
            work.cancel()
        }
        
        
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

        testWorker()
      
    }

}

Yukarıdaki örnekte global bir thread yaratıp bu thread üzerine yazdığımız work bloğunu çalıştırması için göderiyoruz. Daha sonra test amaçlı asyncAfter fonksiyonu ile 5 saniye sonra workeri durdurma emrini veriyoruz.

Kategori:iOS

Bu yazı yorumlara kapalı.

Copyright © 2022 Kenan Atmaca