[macruby-changes] [4315] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Thu Jul 1 11:38:01 PDT 2010
Revision: 4315
http://trac.macosforge.org/projects/ruby/changeset/4315
Author: ernest.prabhakar at gmail.com
Date: 2010-07-01 11:37:59 -0700 (Thu, 01 Jul 2010)
Log Message:
-----------
Fix Dispatch p_find doc
Modified Paths:
--------------
MacRuby/trunk/lib/dispatch/README.rdoc
MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb
Added Paths:
-----------
MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.sh
Modified: MacRuby/trunk/lib/dispatch/README.rdoc
===================================================================
--- MacRuby/trunk/lib/dispatch/README.rdoc 2010-07-01 00:41:06 UTC (rev 4314)
+++ MacRuby/trunk/lib/dispatch/README.rdoc 2010-07-01 18:37:59 UTC (rev 4315)
@@ -27,8 +27,8 @@
=== What You Need
Note that MacRuby 0.6 is currently (as of March 2010) only available as source[http://www.macruby.org/source.html] or via the {nightly builds}[http://www.icoretech.org/2009/09/macruby-nightlies/]. The examples all assume you run the latest macirb and require the +dispatch+ library:
-
$ macirb
+ #!/usr/local/bin/macruby
require 'dispatch'
We also assume that you are already familiar with Ruby, though not necessarily MacRuby. No prior knowledge of C or GCD is assumed or required, but the {dispatch(3) man page}[http://developer.apple.com/mac/library/DOCUMENTATION/Darwin/Reference/ManPages/man3/dispatch.3.html] may be helpful if you wish to better understand the underlying semantics.
@@ -48,13 +48,13 @@
The downside of asynchrony is that you don't know exactly when your job will execute. Fortunately, +Dispatch::Job+ attempts to duck-type +Thread[http://ruby-doc.org/core/classes/Thread.html]+, so you can call +value[http://ruby-doc.org/core/classes/Thread.html#M000460]+ to obtain the result of executing that block:
@result = job.value
- puts @result.to_int.to_s.size # => 51
+ puts @result.to_int.to_s.size # => 50
This will wait until the value has been calculated, allowing it to be used as an {explicit Future}[http://en.wikipedia.org/wiki/Futures_and_promises]. However, this may stall the main thread indefinitely, which reduces the benefits of concurrency.
Wherever possible, you should instead attempt to figure out exactly _when_ and _why_ you need to know the result of asynchronous work. Then, call +value+ with a block to also perform _that_ work asynchronously once the value has been calculated -- all without blocking the main thread:
- job.value {|v| p v.to_int.to_s.size } # => 51 (eventually)
+ job.value {|v| p v.to_int.to_s.size } # => 50 (eventually)
=== Job#join: Job Completion
@@ -238,11 +238,11 @@
Passes each object and returns nil if none match. Similar to +find+, it returns the first object it _finds_ for which the block is true, but unlike +find+ that may not be the _actual_ first object since blocks -- say it with me -- "may complete out of order":
- (0..4).p_find_all { |i| i == 5 } # => nil
+ (0..4).p_find { |i| i == 5 } # => nil
- (0..4).p_find_all { |i| i.odd?} # => 1
+ (0..4).p_find { |i| i.odd?} # => 1
- (0..4).p_find_all(3) { |i| i.odd?} # => 3
+ (0..4).p_find(3) { |i| i.odd?} # => 3
== Sources: Asynchronous Events
Modified: MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb
===================================================================
--- MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb 2010-07-01 00:41:06 UTC (rev 4314)
+++ MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb 2010-07-01 18:37:59 UTC (rev 4315)
@@ -96,7 +96,7 @@
@events = []
mask2 = [:exit, :fork, :exec, :signal]
proc_src2 = Dispatch::Source.process($$, mask2) do |s|
- @events << Dispatch::Source.data2events(s.data)
+ @events << Dispatch::Source.data2events(s.data)
end
sig_usr1 = Signal.list["USR1"]
Signal.trap(sig_usr1, "IGNORE")
@@ -146,7 +146,7 @@
file = File.open(filename, "r")
@result = ""
reader = Dispatch::Source.read(file) do |s|
- @result << @file.read(s.data)
+ @result << @file.read(s.data)
end
while (@result.size < @msg.size) do; end
puts @result # => e.g., 489-Wed_Mar_24_15:59:00_-0700_2010
Added: MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.sh
===================================================================
--- MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.sh (rev 0)
+++ MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.sh 2010-07-01 18:37:59 UTC (rev 4315)
@@ -0,0 +1,3 @@
+#!/bin/sh
+DISPATCH=../../../lib/dispatch
+grep " " $DISPATCH/README.rdoc | sed "s/ //" | grep -v '\$'
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100701/ac456cd8/attachment.html>
More information about the macruby-changes
mailing list