This would defeat @noescape and any generic return type we might want to add to dispatchSync. On Thu, May 12, 2016 at 11:52 AM Hooman Mehr via swift-evolution < swift-evolution@swift.org> wrote:
> > Exactly: I also consider synchronous dispatch a special case not worthy of > sacrificing a better name (`dispatch`) for it. I prefer to have a single > `dispatch` as the main function name. Here is my proposed modified > signature based on the proposal > <https://github.com/apple/swift-evolution/blob/master/proposals/0088-libdispatch-for-swift3.md> > : > > class DispatchQueue : DispatchObject { > func dispatch(synchronous: Bool, work: @convention(block) () -> Void) > > > > func dispatch( > group: DispatchGroup? = nil, > qos: DispatchQoS = .unspecified, > flags: DispatchWorkItemFlags = [], > work: @convention(block) () -> Void > > ) > } > > queue. dispatch(group: group) { > print("Hello World") > } > > queue.dispatch(synchronous: true) { > print("Hello World") > } > > > In the above synchronous variant, passing synchronous flag as false simply > delegates to async function. This saves us from having to use a name like > dispatchSync(). > > Actually, I currently have my own wrapper for libdispatch that works in > this way. My wrapper also unifies more of the API under the same `dispatch` > function with more optional parameters. For example, `apply` functions are > also handled with `dispatch` function. It will iterate if `iterations:` > optional parameter is specified and so on. I find it very convenient to use > and the resulting code is very clear and readable. > > I know, this goes further than importing the existing API, but concurrency > API has such a profound impact on the overall style and readability of code > that it is worth going even further than what proposal suggests to get a > really clear and readable API. > > Hooman > > On May 12, 2016, at 11:16 AM, Thorsten Seitz via swift-evolution < > swift-evolution@swift.org> wrote: > > dispatch() and dispatchSync() would be my preference as asynchronous > dispatch is the point of GCD and synchronous dispatch is a special case and > therefore I think the visual asymmetry is an advantage. > > -Thorsten > > > Am 12.05.2016 um 20:10 schrieb James Dempsey via swift-evolution < > swift-evolution@swift.org>: > > > On May 11, 2016, at 8:02 PM, Ricardo Parada <rpar...@mac.com> wrote: > > > > For synchronously and asynchronously how about the adverbs before the verb: > > syncDispatch() > asyncDispatch() > > > > I think with the abbreviation ‘sync’ it’s very easy to read ‘sync’ as a > verb and dispatch as a noun. > > i.e. I’m going to sync up with you about our plan > i.e. I received a dispatch from headquarters > > I would be very fine with > > dispatchAsync() and dispatchSync() as method names. > > > > > ? > > On May 11, 2016, at 10:50 AM, James Dempsey <demp...@mac.com> wrote: > > So maybe that will conform to the API naming guideline? Or would the verb > have to be in the base name of the func? > > > It seems from the guidelines that the intent is for the verb to be in the > base name of the func, especially since there is another set of guidelines > for naming function parameters. > > In general the other methods in the proposal are verbs (perform(), > notify(), wait(), cancel(), etc.) > > At least for me, not including a verb makes the API read like the sentence > “The dog quickly”. This wasn’t so bad in the C API, because you could read > the word ‘dispatch’ as the verb. > > > Looking at the current GDC API, it does seem like dispatching > synchronously is the rare and special case. > > Could there be just a single dispatch() method, with async as a flag with > a default value of true? > > It might be a little ugly because most of the other parameters of the > proposed asynchronously() method would not apply in the sync case. > > James > > > > On May 11, 2016, at 7:14 AM, Ricardo Parada <rpar...@mac.com> wrote: > > Jacob Bandes-Storch suggested: > > synchronously(execute work: …) > > So maybe that will conform to the API naming guideline? Or would the verb > have to be in the base name of the func? > > Or perhaps: > > synchronously(dispatch work: …) > asynchronously(dispatch work: …) > > > > On May 11, 2016, at 9:32 AM, James Dempsey via swift-evolution < > swift-evolution@swift.org> wrote: > > The method names > > synchronously() > asynchronously() > > are both adverbs, not noun phrases or verb phrases. > These methods have side effects, so each name should have a verb in it to > make it a verb phrase. > > > Since these are the methods where you actually dispatch a block into a > queue > > dispatchSynchronously() > dispatchAsynchronously() > > would include the verb in the name of the methods. > > > > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution > > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution > > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution >
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution