N
Neil Spring
should the following code cause the ruby interpreter to segfault? If
so, resolv.rb should have a mutex guard @senders. If not, st_foreach
should avoid the race when independent threads delete adjacent elements
from the same linked list.
#!/usr/bin/ruby
desired_length = 10000
hash = Hash.new
threads = (0..4).map { |i|
Thread.new {
while true
hash.delete_if { |k,v| Kernel.rand > 0.5 }
while hash.length < desired_length
hash[Kernel.rand(desired_length * 10)] = 12
end
end
}
}
(I submitted a really clunky version of this as ruby bug 1326 with not
nearly so simple a test case, but can't figure out how to follow up to
the message).
thanks,
-neil
so, resolv.rb should have a mutex guard @senders. If not, st_foreach
should avoid the race when independent threads delete adjacent elements
from the same linked list.
#!/usr/bin/ruby
desired_length = 10000
hash = Hash.new
threads = (0..4).map { |i|
Thread.new {
while true
hash.delete_if { |k,v| Kernel.rand > 0.5 }
while hash.length < desired_length
hash[Kernel.rand(desired_length * 10)] = 12
end
end
}
}
(I submitted a really clunky version of this as ruby bug 1326 with not
nearly so simple a test case, but can't figure out how to follow up to
the message).
thanks,
-neil