İçeriğe geç

Swift 5.5 ile Actor kullanımı

Merhabalar bu yazımda Swift 5.5 ile aramıza katılan Concurrency geliştirmeleri altında yer alan yeni obje tanımlayıcısı actor hakkında bilgi vereceğim.

Class, Struct tanımladığımız gibi tanımlanmakta ve başına ismin başına actor ön ekini almakta. Bu nesnenin ortaya çıkış sebebi asenkron işlemlerini derleyici tarafında yarışır duruma sokarak hataya ve performans kaybına neden olmadan sırası ile doğru şekilde işletmektir. Önceki yazımda bahsettiğim await/async ile birlikte fonksiyonlarımızı yazarak gerekli aksiyonları gerçekleştiririz.

Actor nesnesini farklı bir class veya struct içerisinde tanımlayabiliriz ancak async yapıda olmadıkları için fonksiyonlarını çağıramayız. Sınıflardan ayrılan diğer bir özellikte Actor şuan için kalıtım yapmaya izin vermez. Aktörler aynı anda yalnızca bir görevin değiştirilebilir durumlarına erişmesine izin verir, bu da birden çok görevdeki kodun bir aktörün aynı örneğiyle etkileşime girmesini güvenli hale getirir.

Actor yapısını sürekli olarak heryerde senaryoda kullanmak büyük bir hatadır. Sadece uygun async işlemler gerçekleştireceğiniz zaman kullanmalısınız.

actor ListCollector {
    
    var list: Set<String>

    init(list: Set<String>) {
        self.list = list
    }

    func send(item selected: String, to user: ListCollector) async -> Bool {
        guard list.contains(selected) else { return false }
        list.remove(selected)
        await user.transfer(item: selected)
        return true
    }

    func transfer(item: String) {
        list.insert(item)
    }
}

 

 

Tarih:Swift 5

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Copyright © 2021 Kenan Atmaca