In my day to day tasks, synchronization primitives are used quite often. ObjC 
had the @synchronized attribute for methods. I didn’t find anything about this 
in swift evolution, so I thought i bring it up here. I think it would quite 
easily be possible to introduce a synchronized qualifier for struct/class 
objects that automatically synthesize a semaphore variable on the object and 
use it to lock said method. Here is an example of how that would work

Without the synchronized attribute (code written in mail, not compiled):

class Obj {

         private let sema = DispatchSemaphore(value: 1)

        func synchronizedMethod() {
                sema.wait()
                defer {
                        sema.signal()
                }
                // do something...
        }
}

With synchronized attribute (the semaphore/wait/deferred-signal is synthesized 
by Swift automatically)

class Obj {

        synchronized func method() {
                // semaphore is synthesized automatically, do something…
        }
}


Cheers,
Erik
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to