Actions
Bug #11496
closedMutex#synchronize testing code should be data race.
Bug #11496:
Mutex#synchronize testing code should be data race.
ruby -v:
ruby 2.3.0dev (2015-08-28 trunk 51715) [x86_64-darwin14]
Description
Files
Updated by kosaki (Motohiro KOSAKI) about 11 years ago
inserting sleep is unacceptable because sleep invokes volunteer context switch and changes a meaning and a purpose of the test.
Instead, I'd like to insert a waste loop to trigger a thread preemption race. like this
100.times {
m = Mutex.new
r = 0
num_threads = 10
loop=100
(1..num_threads).map{
Thread.new do
loop.times do
m.synchronize{
tmp = r
100.times { # waste loop
}
r = tmp + 1
}
end
end
}.each{|e|
e.join
}
raise unless r == num_threads*loop
}
puts "pass"
Updated by kosaki (Motohiro KOSAKI) about 11 years ago
- Status changed from Open to Closed
- Assignee set to kosaki (Motohiro KOSAKI)
committed at r51868.
Actions