[#36644] Gtk.main — TOYOFUKU Chikanobu <toyofuku@...>
豊福です。
18 messages
2002/12/03
[#36645] Re: Gtk.main
— nobu.nakada@...
2002/12/03
なかだです。
[#36646] Re: Gtk.main
— TOYOFUKU Chikanobu <toyofuku@...>
2002/12/03
豊福です。
[#36649] Re: Gtk.main
— nobu.nakada@...
2002/12/03
なかだです。
[#36676] WIN32OLE と IAgentCtlRequest — Shusaku <tsyk@...>
Shusakuです。
7 messages
2002/12/05
[#36683] SyntaxError caused by redefinition of Class#== within irb. — Shusaku <tsyk@...>
Shusakuです。
5 messages
2002/12/05
[#36686] 1.1 < 61.1 - 60.0 — Shin-ichiro HARA <sinara@...>
原です。
19 messages
2002/12/06
[#36693] Re: 1.1 < 61.1 - 60.0
— "Shigeo Kobayashi" <shigeo@...>
2002/12/06
小林です。
[#36717] ruby 1.6.8 preview3 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
12 messages
2002/12/09
[#36718] Re: ruby 1.6.8 preview3
— m_seki@...
2002/12/09
[#36728] blade.stop — Shin-ichiro HARA <sinara@...>
原です。
9 messages
2002/12/10
[#36756] Re: blade.stop
— Shin-ichiro HARA <sinara@...>
2002/12/13
原です。
[#36734] Rubyソースコード完全解説 — Minero Aoki <aamine@...>
あおきです。ちょっと宣伝です。
10 messages
2002/12/11
[#36740] WIN32OLEでの定数読み込み — Takashi & Kayoko Sano <tksano@...3.kcn.ne.jp>
こんにちは。佐野と申します。
9 messages
2002/12/12
[#36742] DBM — OHARA Shigeki <os@...>
大原です。
6 messages
2002/12/12
[#36757] ruby 1.6.7+ruby-postgres-0.7.0でSegmentation fault — iga50@...
五十嵐と申します。
5 messages
2002/12/13
[#36768] Ruby/FreeType メンテナ募集 — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
4 messages
2002/12/15
[#36770] www.ruby-lang.orgリニューアル準備のお知らせ — TADA Tadashi <sho@...>
ruby-lang.orgのwebmasterチームでは、タイムリーな情報提供と使いやすい
11 messages
2002/12/16
[#36780] 2GB超のファイルにアクセスするとErrno::EOVERFLOWが発生してしまう — oka@...
4 messages
2002/12/16
[#36793] Thread と Net::HTTP — Makoto Satoh <makotosato2@...>
佐藤と申します。
9 messages
2002/12/17
[#36796] Ruby SNMPについて
— Tadashi Oh-Ya <toy@...>
2002/12/17
おおやと申します。
[#36797] Re: Ruby SNMPについて
— "Akinori MUSHA" <knu@...>
2002/12/17
At Tue, 17 Dec 2002 19:59:00 +0900,
[#36821] Cygwinで拡張モジュールが生成されない — 堀川 久 <vzw00011@...>
こんにちは。
10 messages
2002/12/23
[#36826] ANN: ruby 1.6.8 — matz@... (Yukihiro Matsumoto)
Hello everyone,
9 messages
2002/12/24
[#36830] [ATTN] Prepare name freeze of RAA — "NAKAMURA, Hiroshi" <nakahiro@...>
みなさんこんにちは。
11 messages
2002/12/25
[#36831] Re: [ATTN] Prepare name freeze of RAA
— FUJIMOTO Hisakuni <hisa@...>
2002/12/25
こんにちは、藤本です。
[#36832] Re: [ATTN] Prepare name freeze of RAA
— "NAKAMURA, Hiroshi" <nakahiro@...>
2002/12/25
なひです。
[#36848] httpsnapshot.rb — Shin-ichiro HARA <sinara@...>
原です。
4 messages
2002/12/27
[#36856] raccのインストールについて — 齋藤雅浩 <m-saito@...4.so-net.ne.jp>
齋藤です。
6 messages
2002/12/27
[#36862] libsafeを入れるとrubyスクリプトが実行できない — Hideki Yamane <henrich@...>
8 messages
2002/12/28
[#36864] Re: libsafeを入れるとrubyスクリプトが実行できない
— Tanaka Akira <akr@...17n.org>
2002/12/28
In article <200212280626.gBS6QDL25734@mms-r00.iijmio.jp>,
[#36869] numbering of ruby-1.8.x* — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
4 messages
2002/12/29
[ruby-list:36868] Re: ruby 1.8.0 (server lock?)
From:
nobu.nakada@...
Date:
2002-12-28 19:52:39 UTC
List:
ruby-list #36868
なかだです。
At Sun, 29 Dec 2002 02:43:44 +0900,
em6t-kbt@asahi-net.or.jp wrote:
> プロセスとスレッドの言葉の意味は、とりあえず、forkした場合に
> できるのはプロセス、Thread.startの場合はスレッドだと思ってい
> ます。
そうです。
> プロセスの一番上になる親スレッドが終了した場合、そのプロセス
> に属するスレッドはすべてその時点で終了する。
Rubyではスレッドにとくに親子関係はありませんが、最初から存在す
るメインスレッドというものがあります。これが終了するとプロセス
全体が終了します。そして、1.7以降ではforkした子プロセスではfork
を呼び出したスレッドがメインスレッドになり、他のスレッドは消滅
します。
> > プロセ
> > スをバックグラウンドで走らせたいなら、先に fork && exit する必
> > 要があります。
>
> プログラムを下記のように変更して、無事動きました。exitはruby
> のコマンドかと思ったのですが、普通のプロセスの終了のことなん
> ですな。
その二つをどう区別されてるのかよく分かりませんが、exitは自分自
身のプロセスを終了させるメソッドです。
最初([ruby-list:36842])のコードの動作を説明すると、スレッド(T1)
が分岐した後、メインスレッド(T0)でforkします。ここで、親プロセ
スのほうはブロックに入らずに次に進みますが、そこでコードは終り
なのでメインスレッドおよびプロセスは終了します。子プロセスのT1'
は、1.6なら生きているのですが1.8では消滅してしまって、残ったメ
インスレッドT0'だけがずっとsleepし続けることになります。
T0 ----+------------------+-------> exit
| Thread.start | fork
T1 +----> open -------|+------> exit
||
親プロセス ||
......................v|..............
子プロセス |v
||
T0' +-------> sleep
| (1.6のみ)
T1' +--> open ...
もし親プロセスがexitせずに動き続けた場合、T1とT1'の両方がopenし
ようとすることになります。1.8では、メイン以外のスレッドを終了さ
せることで、こういった競合をとりあえず回避しようとしています。
> fork {
> Thread.start do
> gsock = TCPServer.open(8080)
> socket = gsock.accept
> socket.puts("Hello, world")
> socket.close()
> end
> sleep
> }
ついでに、こちらの流れはこうなります。
T0 -------------+-----------------> exit
| fork
親プロセス |
............v..............
子プロセス |
|
T0' +-----+-----------> sleep
| Thread.start
T1' +----> open ...
メインの処理をforkのブロックに入れずに、こうしても同じことです。
fork && exit # 親プロセスを終了
# Process.setsid # デーモン化する場合
Thread.start do
# ....
end
sleep
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦