<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 20, 2017, at 7:55 AM, Ian Partridge via swift-corelibs-dev &lt;<a href="mailto:swift-corelibs-dev@swift.org" class="">swift-corelibs-dev@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">On Darwin, asynchronous usage of Operation is supported via KVO notifications.<div class=""><br class=""></div><div class="">Because KVO is only available on Darwin platforms, swift-corelibs-foundation currently does not support asychronous Operations, and there is a comment to that effect:</div><div class=""><br class=""></div><div class=""><a href="https://github.com/apple/swift-corelibs-foundation/blob/6c2afef20330681ec1f8e4e4e3e2664bfd758888/Foundation/NSOperation.swift#L50" class="">https://github.com/apple/swift-corelibs-foundation/blob/6c2afef20330681ec1f8e4e4e3e2664bfd758888/Foundation/NSOperation.swift#L50</a><br class=""></div><div class=""><br class=""></div><div class="">My understanding is that it's unlikely KVO will arrive on Linux any time soon, so this leaves us with a problem in Operation.&nbsp; Asynchronous usage of Operation is an important feature.</div><div class=""><br class=""></div><div class="">Is there any way that we could support asynchronous operations in swift-corelibs-foundation, in the absence of KVO?</div></div></div></blockquote><div><br class=""></div><div>So perhaps you misunderstood my comment? What are you meaning by asynchronous operation? Technically all operations running in a queue are “asynchronous” on Darwin or on Linux.&nbsp;</div><div><br class=""></div><div>My commentary was about the cases where main finishes execution and the operation is not finished.</div><div><br class=""></div><div>The subclassers of Operation would need to somehow notify the super-class that the operation is finished. And we would need to have a mechanism to understand if the subclasser is overriding main or start (or both?!)</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">Might it be acceptable to add extra temporary public API to enable this?</div></div></div></blockquote><div><br class=""></div><div>There is never a thing as temporary API - it haunts us for ever ;)</div><div><br class=""></div><div>I think it would be better to advocate a sound design pattern that would facilitate proper implementations on all platforms instead… Perhaps like; how does one properly use run loops in the context of Operation or dispatch. Often that is a suitable way to make things that act asynchronously without consuming another thread/queue.</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">Many thanks,<br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature">Ian Partridge<br class=""></div>
<br class="">
</div></div>
_______________________________________________<br class="">swift-corelibs-dev mailing list<br class=""><a href="mailto:swift-corelibs-dev@swift.org" class="">swift-corelibs-dev@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-corelibs-dev<br class=""></div></blockquote></div><br class=""></body></html>