Project

General

Profile

Actions

Bug #257

closed

Thread#kill cannot break BLOCKING_REGION() on windows

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

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
Backport:
[ruby-dev:35446]

Description

=begin
こんにちは、なかむら(う)です。

Windows(除cygwin)では、外部からBLOCKING_REGION()を中断させる
ことができないので、あるスレッドがBLOCKING_REGION()に入ってい
る場合、そのスレッドをThread#killで終了されることができません。

例:
require "socket"
s = TCPServer.new(0)
t = Thread.new{s.accept}
sleep 1
t.kill
t.join # <= acceptがBLOCKING_REGION()内で処理されるため、
# ここで永久に待ち状態となる

# 現時点で対策が思いついていないのですが、忘れないように記録
# に残します。

それでは。
--
U.Nakamura usa@garbagecollect.jp
=end

Actions

Also available in: Atom PDF