マルチスレッドについて
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
NGNGLinux上で動かすと、どうしても、各スレッドを
プロセスと認識してしまいます。
どうしてなんでしょうか?
0002login:Penguin
NGNG質問した方がよいとおもわれ
(マルチスレッド分かってない)
00031
NGNGposixのpthreadでマルチスレッドを実装してます。
Unix上ではスレッドとして動作してます
0004login:Penguin
NGNG0005login:Penguin
NGNG試すようで失礼だが>>1の言うマルチスレッドの定義を上げてみよ
0006login:Penguin
NGNG00071
NGNG1つのプロセスに複数の実行単位(スレッド)の処理があり、
スケジューリングにより実行単位(スレッド)が切り替わる
と思ってましたが・・・間違ってるでしょうか?
00081
NGNGもともとSolarisで開発したものです
0009login:Penguin
NGNGその情報がないと先にはすすめないだろ。
まあLinuxのスレッドはメモリ空間を共有した別のプロセスだから
プロセスIDとかで同じプロセスかどうかチェックしてるようだと
別プロセス上で走ってるとみなしちゃうよな。
0010login:Penguin
NGNGforkしたら別のメモリ空間なの?
00111
NGNGメモリ空間を共有しているとスレッドと定義されるんですか?
場違いの質問ならすみません。。
0012login:Penguin
NGNGkillとかするとどうなるんだろうね。
みんな死ぬの??
0013login:Penguin
NGNG0014login:Penguin
NGNG00159
NGNGついていて、同じ物理メモリを共有してる。どっちかが書き込みをした時点で
コピーされて別メモリになる。fork後のアロケーションは最初から別メモリが
確保される。
スレッドの場合は同じ物理メモリに書き込まれるだけ。
問題は何をもってしてスレッドと定義するかだよね。
プロセスIDが違う場合は別プロセスと定義すればLinuxのスレッドは
メモリ空間を共有した別なプロセスということになる。
同じメモリを使える最小実行単位と言う定義であるならば、
Linuxのスレッドはまぎれもなくスレッド。
よくLinuxのスレッドの実装はタコだって人がいるけど、俺は別にいいと思う。
最終的な結果は同じだし、パフォーマンス的に劣る部分もない。
スケジューラがスレッドキューを並び替えて同じプロセス上にあるスレッドを
連続的に動かすようなチューニングをしてあればプロセス切り替え時におきる
TLBのフラッシュをなくして、高速化できるんだけど、スケジューラの並び買えで
結局時間が掛かるから、あまりそういうチューニングはしない。
0016login:Penguin
NGNG0017login:Penguin
NGNGPOSIX thread と clone との相性が悪いというのが一番の
問題だと思う。移植性を考えてpthread使ってsolやosf1と
同じ感覚でやるとちっとも性能がでない。逆に特性を分かって
スレッドプログラミングすると非常に速い、と。
0018login:Penguin
NGNG親玉をkillすればいいんじゃないの?
0019login:Penguin
NGNGhttp://cocoa.2ch.net/test/read.cgi?bbs=linux&key=988860214&st=284&to=302&nofirst=true
0020login:Penguin
NGNGkill -SAGE
00219
NGNG俺はWin擁護派だが(どれくらい擁護派なのかは元オリスレ1だって
言えば分かるかな)、こんなスレッドの実装法の違いで批判するような
ことはしないな。確かに見かけ上タコにみえるから突っ込みやすい部分
ではあるが。Linuxのカーネルにはもっと突っ込むべき部分がまだまだ
一杯あるからちゃんと分かってる人ならこんなとこに突っ込まないよ。
00221
NGNGプログラムの問題かな・・?って感じで書き込んだんですが・・
スレッドの定義がまだよくわかってないんですが
皆さん、回答ありがとうございました
00231
NGNG0024名無しさん@お腹いっぱい。
NGNG困ってますが Kernel 2.4 でどうですか?
0025login:Penguin
NGNGptH[}XIvA
]lBHPC WASolaris
thread タSR]B
0026login:Penguin
NGNGそれマジ?
出来ればソースきぼ〜ん。
■ このスレッドは過去ログ倉庫に格納されています