Project

General

Profile

Actions

Bug #4808

closed

thread_wait_for() eats 100% of CPU power

Added by nagai (Hidetoshi Nagai) over 13 years ago. Updated over 13 years ago.

Status:
Closed
Target version:
ruby -v:
-
Backport:
[ruby-dev:43606]

Description

いつからかは把握できていませんが (少なくとも 1.9.2p0 では発生しません),
thread_wait_for() が CPU パワーを大量に消費するようになっています.

これが原因で,Ruby/Tk も CPU を 100 % 消費してしまいます.

このままリリースになってしまうとかなりまずいと思いますので,
優先度 High で急ぎ報告だけあげておきます.

以下はテスト用のコードです.
make 後に ruby -r ./th_wait_for.so -e '' でお試しください.
----<th_wait_for.c>-----------------------------------------
#include "ruby.h"

void
Init_th_wait_for()
{
struct timeval t;

t.tv_sec = 0;
t.tv_usec = 10000; /* 10ms */

while(1) {
fprintf(stderr, "*");fflush(stderr);
rb_thread_wait_for(t);
}
}

----<extconf.rb>--------------------------------------------
require 'mkmf'
create_makefile('th_wait_for');

--
永井 秀利 ()
九州工業大学大学院情報工学研究院知能情報工学研究系知能情報メディア部門助教

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0