[MacRuby-devel] [MacRuby] #597: Dispatch Queue async method inconsistent results
MacRuby
ruby-noreply at macosforge.org
Wed Feb 3 10:13:11 PST 2010
#597: Dispatch Queue async method inconsistent results
--------------------------------------+-------------------------------------
Reporter: Knut.Olaf.Lien@… | Owner: ernest.prabhakar@…
Type: defect | Status: closed
Priority: blocker | Milestone:
Component: MacRuby | Resolution: invalid
Keywords: GCD async method |
--------------------------------------+-------------------------------------
Changes (by ernest.prabhakar@…):
* status: new => closed
* resolution: => invalid
Comment:
I even get it with no function at all.
=> [0, 1, 2, 3, false, 5]
Oh, wait, you're using a *local* variable. You need to use a block
variable, I think:
@result = []; 8.times {|i| q.async(grp) {@result[i] = i}}
p @result => [0, 1, 2, 3, 4, 5, 6, 7]
Using a copy of the array "sometimes" works, but I'm not quite sure how or
why. Still, the technical answer is that attempting to modify a dynamic
object inside a GCD leads to "undefined" behavior, so I'll mark this as
"behaves correctly". :-/
--
Ticket URL: <http://www.macruby.org/trac/ticket/597#comment:3>
MacRuby <http://macruby.org/>
More information about the MacRuby-devel
mailing list