[macruby-changes] [4329] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Wed Jul 7 16:22:48 PDT 2010
Revision: 4329
http://trac.macosforge.org/projects/ruby/changeset/4329
Author: ernest.prabhakar at gmail.com
Date: 2010-07-07 16:22:47 -0700 (Wed, 07 Jul 2010)
Log Message:
-----------
Use Queue#join as wrapper on sync {}
Modified Paths:
--------------
MacRuby/trunk/lib/dispatch/README.rdoc
MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb
Modified: MacRuby/trunk/lib/dispatch/README.rdoc
===================================================================
--- MacRuby/trunk/lib/dispatch/README.rdoc 2010-07-07 23:06:51 UTC (rev 4328)
+++ MacRuby/trunk/lib/dispatch/README.rdoc 2010-07-07 23:22:47 UTC (rev 4329)
@@ -293,7 +293,7 @@
The most common reason you want your own queue is to ensure that all pending blocks have been executed, via a +join+:
- q.sync {}
+ q.join
== Sources: Asynchronous Events
@@ -369,7 +369,7 @@
To fire a custom source, we invoke what GCD calls a _merge_ using the shovel operator ('+<<+'):
adder << 1
- q.sync {}
+ q.join
puts "sum: #{@sum} => 1"
The name "merge" makes more sense when you see it coalesce multiple firings into a single handler:
@@ -377,10 +377,10 @@
adder.suspend!
adder << 3
adder << 5
- q.sync {}
+ q.join
puts "sum: #{@sum} => 1"
adder.resume!
- q.sync {}
+ q.join
puts "sum: #{@sum} => 9"
adder.cancel!
@@ -393,14 +393,14 @@
@mask = 0
masker = Dispatch::Source.or(q) { |s| puts "Dispatch::Source.or: #{s.data.to_s(2)} (#{(@mask |= s.data).to_s(2)})"}
masker << 0b0001
- q.sync {}
+ q.join
puts "mask: #{@mask.to_s(2)} => 1"
masker.suspend!
masker << 0b0011
masker << 0b1010
puts "mask: #{@mask.to_s(2)} => 1"
masker.resume!
- q.sync {}
+ q.join
puts "mask: #{@mask.to_s(2)} => 1011"
masker.cancel!
@@ -452,7 +452,7 @@
Signal.trap(sig_usr1, "IGNORE")
Process.kill(sig_usr1, $$)
Signal.trap(sig_usr1, "DEFAULT")
- q.sync {}
+ q.join
You can check which flags were set by _and_ing against the bitmask:
@@ -492,7 +492,7 @@
3.times { Process.kill(sig_usr2, $$) }
Signal.trap(sig_usr2, "DEFAULT")
signal.resume!
- q.sync {}
+ q.join
puts "signals: #{@signals} => 3"
signal.cancel!
@@ -527,10 +527,10 @@
file.print @msg
file.flush
file.close
- q.sync {}
+ q.join
puts "fevent: #{@fevent & fmask} => #{Dispatch::Source::VNODE_WRITE} (Dispatch::Source::VNODE_WRITE)"
File.delete(filename)
- q.sync {}
+ q.join
puts "fevent: #{@fevent} => #{fmask} (Dispatch::Source::VNODE_DELETE | Dispatch::Source::VNODE_WRITE)"
file_src.cancel!
@@ -545,7 +545,7 @@
end
file.print @msg
file.flush
- q.sync {}
+ q.join
puts "fevent2: #{@fevent2} => [:write]"
file_src2.cancel!
@@ -562,7 +562,7 @@
puts "Dispatch::Source.read: #{s.data}: #{@input}"
end
while (@input.size < @msg.size) do; end
- q.sync {}
+ q.join
puts "input: #{@input} => msg" # => e.g., 74323-2010-07-07_15:23:10_-0700
reader.cancel!
@@ -576,7 +576,7 @@
@message = @msg.dup
writer = Dispatch::Source.write(file, q) do |s|
if @message.size > 0 then
- char = @message[0..0]
+ char = @message[0]
file.write(char)
rest = @message[1..-1]
puts "Dispatch::Source.write: #{char}|#{rest}"
Modified: MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb
===================================================================
--- MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb 2010-07-07 23:06:51 UTC (rev 4328)
+++ MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb 2010-07-07 23:22:47 UTC (rev 4329)
@@ -97,7 +97,7 @@
puts "#{(0..4).p_find { |i| i.odd? }} => 1?"
puts "#{(0..4).p_find(3) { |i| i.odd? }} => 3?"
puts q = Dispatch::Queue.for("my_object")
-q.sync {}
+q.join
timer = Dispatch::Source.periodic(0.4) { |src| puts "Dispatch::Source.periodic: #{src.data}" }
sleep 1 # => 1 1 ...
@@ -113,28 +113,28 @@
@sum = 0
adder = Dispatch::Source.add(q) { |s| puts "Dispatch::Source.add: #{s.data} (#{@sum += s.data})" }
adder << 1
-q.sync {}
+q.join
puts "sum: #{@sum} => 1"
adder.suspend!
adder << 3
adder << 5
-q.sync {}
+q.join
puts "sum: #{@sum} => 1"
adder.resume!
-q.sync {}
+q.join
puts "sum: #{@sum} => 9"
adder.cancel!
@mask = 0
masker = Dispatch::Source.or(q) { |s| puts "Dispatch::Source.or: #{s.data.to_s(2)} (#{(@mask |= s.data).to_s(2)})"}
masker << 0b0001
-q.sync {}
+q.join
puts "mask: #{@mask.to_s(2)} => 1"
masker.suspend!
masker << 0b0011
masker << 0b1010
puts "mask: #{@mask.to_s(2)} => 1"
masker.resume!
-q.sync {}
+q.join
puts "mask: #{@mask.to_s(2)} => 1011"
masker.cancel!
@event = 0
@@ -154,7 +154,7 @@
Signal.trap(sig_usr1, "IGNORE")
Process.kill(sig_usr1, $$)
Signal.trap(sig_usr1, "DEFAULT")
-q.sync {}
+q.join
puts "@event: #{(result = @event & mask).to_s(2)} => 1000000000000000000000000000 (Dispatch::Source::PROC_SIGNAL)"
proc_src.cancel!
puts "@events: #{(result2 = @events & mask2)} => [:signal]"
@@ -172,7 +172,7 @@
3.times { Process.kill(sig_usr2, $$) }
Signal.trap(sig_usr2, "DEFAULT")
signal.resume!
-q.sync {}
+q.join
puts "signals: #{@signals} => 3"
signal.cancel!
@fevent = 0
@@ -188,10 +188,10 @@
file.print @msg
file.flush
file.close
-q.sync {}
+q.join
puts "fevent: #{@fevent & fmask} => #{Dispatch::Source::VNODE_WRITE} (Dispatch::Source::VNODE_WRITE)"
File.delete(filename)
-q.sync {}
+q.join
puts "fevent: #{@fevent} => #{fmask} (Dispatch::Source::VNODE_DELETE | Dispatch::Source::VNODE_WRITE)"
file_src.cancel!
@@ -204,7 +204,7 @@
end
file.print @msg
file.flush
-q.sync {}
+q.join
puts "fevent2: #{@fevent2} => [:write]"
file_src2.cancel!
@@ -215,14 +215,14 @@
puts "Dispatch::Source.read: #{s.data}: #{@input}"
end
while (@input.size < @msg.size) do; end
-q.sync {}
+q.join
puts "input: #{@input} => msg" # => e.g., 74323-2010-07-07_15:23:10_-0700
reader.cancel!
file = File.open(filename, "w")
@message = @msg.dup
writer = Dispatch::Source.write(file, q) do |s|
if @message.size > 0 then
- char = @message[0..0]
+ char = @message[0]
file.write(char)
rest = @message[1..-1]
puts "Dispatch::Source.write: #{char}|#{rest}"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100707/9b9c44b0/attachment.html>
More information about the macruby-changes
mailing list