Project

General

Profile

Actions

Bug #3890

closed

ビジースレッドがあるとコンテキストスイッチが起きづらくなる

Added by usa (Usaku NAKAMURA) about 14 years ago. Updated over 13 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 1.9.3dev (2010-09-29 trunk 29361) [x64-mswin64_90]
Backport:
[ruby-dev:42315]

Description

=begin
こんにちは、なかむら(う)です。
とりあえずチケット化するために全文引用します。
遅いのはfeatureかbugか... bugでいいか。

ちなみに
ruby 1.9.3dev (2010-09-30 trunk 29375) [i386-mswin32]
では再現していません。
x64版固有とかCPUコア数とかと関係するとかですかね。

In message "[ruby-dev:42310] ビジースレッドがあるとコンテキストスイッチが起きづらくなる"
on Sep.29,2010 21:16:52, wrote:

こんにちは。
ビジー状態のスレッドがあると中々他のスレッドに処理が戻らず実行速度が遅くなることがあります。
環境はruby 1.9.3dev (2010-09-29 trunk 29361) [x64-mswin64_90]です。

以下のスクリプトを実行すると終了するまでに時間がかかります。

t = Time.now
n = 0
Thread.new{loop {n+=1} }
Thread.new{}.join
p [n, Time.now - t]

.\ruby.exe a.rb
[82741230, 10.6304]

追ってみたところnative_sleepのGVL_UNLOCK_ENDで、mainスレッドが
GVLを取得できずに止まっている時間が長いようです。
ためしにCriticalSectionではなく、USE_WIN32_MUTEXで、Mutexを使うように変更するとすぐ終わるようになりました。

MutexLock版
.\ruby.exe a.rb
[65482, 0.017]

ruby/test_threads.rb:test_listが結構な割合で失敗するので気がつきました。

kuwamoto

それでは。

U.Nakamura
=end


Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #2359: test_threads.rb:test_listClosednobu (Nobuyoshi Nakada)11/12/2009Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0