[macruby-changes] [3147] MacRuby/trunk/sample-macruby/Scripts/futures.rb

source_changes at macosforge.org source_changes at macosforge.org
Tue Dec 22 11:43:23 PST 2009


Revision: 3147
          http://trac.macosforge.org/projects/ruby/changeset/3147
Author:   pthomson at apple.com
Date:     2009-12-22 11:43:23 -0800 (Tue, 22 Dec 2009)
Log Message:
-----------
Added comments and removed an unneessary variable.

Modified Paths:
--------------
    MacRuby/trunk/sample-macruby/Scripts/futures.rb

Modified: MacRuby/trunk/sample-macruby/Scripts/futures.rb
===================================================================
--- MacRuby/trunk/sample-macruby/Scripts/futures.rb	2009-12-22 19:43:19 UTC (rev 3146)
+++ MacRuby/trunk/sample-macruby/Scripts/futures.rb	2009-12-22 19:43:23 UTC (rev 3147)
@@ -1,19 +1,31 @@
+#!/usr/local/bin/macruby
+
+# An implementation of futures (delayed computations) on top of GCD.
+# Original implementation written by Patrick Thomson.
+# Improvements made by Ben Stiglitz.
+
 include Dispatch
- 
+
 class Future
   def initialize(&block)
-    @@queue_count ||= 0
-    Thread.current[:futures_queue] ||= Queue.new("org.macruby.futures-#{Thread.current.object_id}")
+    # Each thread gets its own FIFO queue upon which we will dispatch
+    # the delayed computation passed in the &block variable.
+    Thread.current[:futures] ||= Queue.new("org.macruby.futures-#{Thread.current.object_id}")
+    # Groups are just simple layers on top of semaphores.
     @group = Group.new
-    Thread.current[:futures_queue].async(@group) { @value = block[] }
+    # Asynchronously dispatch the future to the thread-local queue.
+    Thread.current[:futures].async(@group) { @value = block[] }
   end
   
   def value
+    # Wait fo the computation to finish. If it has already finished, then
+    # just return the value in question.
     @group.wait
     @value
   end
 end
- 
+
+
 f = Future.new do
   sleep 2.5
   'some value'
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20091222/3483c2c3/attachment.html>


More information about the macruby-changes mailing list