[swift-evolution] Introducing synthesized locks
Beta
rwidmann at apple.com
Tue Jun 13 11:54:46 CDT 2017
With a serial queue guarding the function or concurrent queues dumping into a serial target queue, DispatchQueue.sync(execute:) can be used as a synchronizing primitive suitable for most workflows. Have you tried exploring libDispatch outside of Semaphores?
~Robert Widmann
> On Jun 12, 2017, at 2:10 AM, Erik Aigner via swift-evolution <swift-evolution at swift.org> wrote:
>
> 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 at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170613/12f93c6a/attachment.html>
More information about the swift-evolution
mailing list