[MacRuby-devel] [MacRuby] #476: GCD Groups should be a wrapper around dispatch, not its own invocation style

MacRuby ruby-noreply at macosforge.org
Fri Dec 4 09:01:21 PST 2009


#476: GCD Groups should be a wrapper around dispatch, not its own invocation
style
----------------------------------------+-----------------------------------
 Reporter:  ernest.prabhakar@…          |       Owner:  lsansonetti@…        
     Type:  enhancement                 |      Status:  new                  
 Priority:  blocker                     |   Milestone:  MacRuby 0.5          
Component:  MacRuby                     |    Keywords:  gcd                  
----------------------------------------+-----------------------------------

Comment(by joshua.ballanco@…):

 Ideally, I'd prefer a change such that the programmer doesn't need to
 worry about the difference between a dispatch group and a dispatch queue.
 There would be only one "Dispatch" class with methods "sync", "async",
 "apply", etc. Dispatch.sync would take a name parameter (a symbol?), and
 subsequent calls to Dispatch.sync with the same parameter would dispatch
 to the same queue. Dispatch.async would just take an optional priority
 parameter. Dispatch.apply would iterate over a collection. All would
 return a group which could be optionally captured for later calls to wait,
 and would accept an optional group argument to add a block to a pre-
 existing group. So, for example:

 {{{

 notifications = Dispatch.async do
   send_start_notification
 end

 url_fetching = Dispatch.apply(LIST_OF_URLS) do |url|
   connection = open(url)
   Dispatch.sync(:disk_dispatch) do
     File.open(URL_FILE) { |f| f << connection.read }
   end
 end

 url_fetching.wait
 Dispatch.async(:group => notifications) do
   send_finish_notification
 end

 do_other_work

 notifications.wait
 exit
 }}}

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/476#comment:2>
MacRuby <http://macruby.org/>



More information about the MacRuby-devel mailing list