зеркало из https://github.com/github/ruby.git
* properties.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32060 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
e3672626bf
Коммит
a72f033447
|
@ -1,8 +1,8 @@
|
|||
i=0
|
||||
while i<200_000
|
||||
i+=1
|
||||
|
||||
Class.new{
|
||||
def m; end
|
||||
}
|
||||
end
|
||||
i=0
|
||||
while i<200_000
|
||||
i+=1
|
||||
|
||||
Class.new{
|
||||
def m; end
|
||||
}
|
||||
end
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
# one thread, one mutex (no contention)
|
||||
|
||||
require 'thread'
|
||||
m = Mutex.new
|
||||
r = 0
|
||||
max = 1000
|
||||
lmax = max * max
|
||||
(1..1).map{
|
||||
Thread.new{
|
||||
i=0
|
||||
while i<lmax
|
||||
i+=1
|
||||
m.synchronize{
|
||||
r += 1
|
||||
}
|
||||
end
|
||||
}
|
||||
}.each{|e|
|
||||
e.join
|
||||
}
|
||||
raise r.to_s if r != max * max
|
||||
# one thread, one mutex (no contention)
|
||||
|
||||
require 'thread'
|
||||
m = Mutex.new
|
||||
r = 0
|
||||
max = 1000
|
||||
lmax = max * max
|
||||
(1..1).map{
|
||||
Thread.new{
|
||||
i=0
|
||||
while i<lmax
|
||||
i+=1
|
||||
m.synchronize{
|
||||
r += 1
|
||||
}
|
||||
end
|
||||
}
|
||||
}.each{|e|
|
||||
e.join
|
||||
}
|
||||
raise r.to_s if r != max * max
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
# two threads, one mutex
|
||||
|
||||
require 'thread'
|
||||
m = Mutex.new
|
||||
r = 0
|
||||
max = 1000
|
||||
lmax = (max * max)/2
|
||||
(1..2).map{
|
||||
Thread.new{
|
||||
i=0
|
||||
while i<lmax
|
||||
i+=1
|
||||
m.synchronize{
|
||||
r += 1
|
||||
}
|
||||
end
|
||||
}
|
||||
}.each{|e|
|
||||
e.join
|
||||
}
|
||||
raise r.to_s if r != max * max
|
||||
# two threads, one mutex
|
||||
|
||||
require 'thread'
|
||||
m = Mutex.new
|
||||
r = 0
|
||||
max = 1000
|
||||
lmax = (max * max)/2
|
||||
(1..2).map{
|
||||
Thread.new{
|
||||
i=0
|
||||
while i<lmax
|
||||
i+=1
|
||||
m.synchronize{
|
||||
r += 1
|
||||
}
|
||||
end
|
||||
}
|
||||
}.each{|e|
|
||||
e.join
|
||||
}
|
||||
raise r.to_s if r != max * max
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
# 1000 threads, one mutex
|
||||
|
||||
require 'thread'
|
||||
m = Mutex.new
|
||||
r = 0
|
||||
max = 1000
|
||||
(1..max).map{
|
||||
Thread.new{
|
||||
i=0
|
||||
while i<max
|
||||
i+=1
|
||||
m.synchronize{
|
||||
r += 1
|
||||
}
|
||||
end
|
||||
}
|
||||
}.each{|e|
|
||||
e.join
|
||||
}
|
||||
raise r.to_s if r != max * max
|
||||
# 1000 threads, one mutex
|
||||
|
||||
require 'thread'
|
||||
m = Mutex.new
|
||||
r = 0
|
||||
max = 1000
|
||||
(1..max).map{
|
||||
Thread.new{
|
||||
i=0
|
||||
while i<max
|
||||
i+=1
|
||||
m.synchronize{
|
||||
r += 1
|
||||
}
|
||||
end
|
||||
}
|
||||
}.each{|e|
|
||||
e.join
|
||||
}
|
||||
raise r.to_s if r != max * max
|
||||
|
|
Загрузка…
Ссылка в новой задаче