5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

マルチスレッドについて

1 :login:Penguin:2001/06/20(水) 23:56
Unixで開発したマルチスレッドのアプリを
Linux上で動かすと、どうしても、各スレッドを
プロセスと認識してしまいます。
どうしてなんでしょうか?

2 :login:Penguin:2001/06/20(水) 23:58
あなたご自身言ってることを理解してから
質問した方がよいとおもわれ
(マルチスレッド分かってない)

3 ::2001/06/20(水) 23:59
ちなみに開発言語は、C/C++で
posixのpthreadでマルチスレッドを実装してます。
Unix上ではスレッドとして動作してます

4 :login:Penguin:2001/06/21(木) 00:01
はわわわー

5 :login:Penguin :2001/06/21(木) 00:04
>>1
試すようで失礼だが>>1の言うマルチスレッドの定義を上げてみよ

6 :login:Penguin:2001/06/21(木) 00:09
UNIXって具体的に何を指してるの?

7 ::2001/06/21(木) 00:09
>>5
1つのプロセスに複数の実行単位(スレッド)の処理があり、
スケジューリングにより実行単位(スレッド)が切り替わる
と思ってましたが・・・間違ってるでしょうか?

8 ::2001/06/21(木) 00:11
>>6
もともとSolarisで開発したものです

9 :login:Penguin:2001/06/21(木) 00:14
どうやってスレッドかどうかって認識してるんだ?
その情報がないと先にはすすめないだろ。
まあLinuxのスレッドはメモリ空間を共有した別のプロセスだから
プロセスIDとかで同じプロセスかどうかチェックしてるようだと
別プロセス上で走ってるとみなしちゃうよな。

10 :login:Penguin:2001/06/21(木) 00:19
プロセスとスレッドの違いを教えてください。
forkしたら別のメモリ空間なの?

11 ::2001/06/21(木) 00:22
カーネルは別のプロセスとして認識していると考えていいのでしょうか?
メモリ空間を共有しているとスレッドと定義されるんですか?
場違いの質問ならすみません。。

12 :login:Penguin:2001/06/21(木) 00:24
別のプロセスとして認識されてるなら、
killとかするとどうなるんだろうね。
みんな死ぬの??

13 :login:Penguin:2001/06/21(木) 00:27
死なないですね

14 :login:Penguin:2001/06/21(木) 00:38
よ〜するにカーネルの実装がしょぼいってことか?

15 :9:2001/06/21(木) 00:39
forkしたら別メモリ。正確に言うとfork直後はメモリはコピーオンライト属性が
ついていて、同じ物理メモリを共有してる。どっちかが書き込みをした時点で
コピーされて別メモリになる。fork後のアロケーションは最初から別メモリが
確保される。
スレッドの場合は同じ物理メモリに書き込まれるだけ。

問題は何をもってしてスレッドと定義するかだよね。
プロセスIDが違う場合は別プロセスと定義すればLinuxのスレッドは
メモリ空間を共有した別なプロセスということになる。
同じメモリを使える最小実行単位と言う定義であるならば、
Linuxのスレッドはまぎれもなくスレッド。
よくLinuxのスレッドの実装はタコだって人がいるけど、俺は別にいいと思う。
最終的な結果は同じだし、パフォーマンス的に劣る部分もない。
スケジューラがスレッドキューを並び替えて同じプロセス上にあるスレッドを
連続的に動かすようなチューニングをしてあればプロセス切り替え時におきる
TLBのフラッシュをなくして、高速化できるんだけど、スケジューラの並び買えで
結局時間が掛かるから、あまりそういうチューニングはしない。

16 :login:Penguin:2001/06/21(木) 00:47
じゃぁ、Linuxでマルチスレッドのソフトをkillしたいときにはどうするの?

17 :login:Penguin:2001/06/21(木) 00:47
>>15
POSIX thread と clone との相性が悪いというのが一番の
問題だと思う。移植性を考えてpthread使ってsolやosf1と
同じ感覚でやるとちっとも性能がでない。逆に特性を分かって
スレッドプログラミングすると非常に速い、と。

18 :login:Penguin:2001/06/21(木) 00:51
>>16
親玉をkillすればいいんじゃないの?

19 :login:Penguin:2001/06/21(木) 01:11
妙なスレッドで話題になったことがあるなぁ
http://cocoa.2ch.net/test/read.cgi?bbs=linux&key=988860214&st=284&to=302&nofirst=true

20 :login:Penguin:2001/06/21(木) 01:14
>>18
kill -SAGE

21 :9:2001/06/21(木) 01:20
284は俺と同じ事をいってるね。でもやっぱり煽る奴はいるんだね。
俺はWin擁護派だが(どれくらい擁護派なのかは元オリスレ1だって
言えば分かるかな)、こんなスレッドの実装法の違いで批判するような
ことはしないな。確かに見かけ上タコにみえるから突っ込みやすい部分
ではあるが。Linuxのカーネルにはもっと突っ込むべき部分がまだまだ
一杯あるからちゃんと分かってる人ならこんなとこに突っ込まないよ。

22 ::2001/06/21(木) 01:38
Linux上で、ps,top等でプロセスが複数できているのは
プログラムの問題かな・・?って感じで書き込んだんですが・・
スレッドの定義がまだよくわかってないんですが
皆さん、回答ありがとうございました

23 ::2001/06/21(木) 01:40
あっ!あげてしまいました・・すみません

24 :名無しさん@お腹いっぱい。:2001/06/21(木) 11:00
SMPマシンでスレッドにstraceするとそのthreadがサスペンドして
困ってますが Kernel 2.4 でどうですか?

25 :login:Penguin:2001/06/21(木) 14:30
> IIAptH[}XIB

ptH[}XIvA
]lBHPC WASolaris
thread タSR]B

26 :login:Penguin:2001/06/21(木) 15:31
>>25
それマジ?
出来ればソースきぼ〜ん。

6 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)