- 1 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:19:27 ]
- マルチスレッドプログラミングについて語るスレ
■前スレ マルチスレッドプログラミング相談室 その7 pc12.2ch.net/test/read.cgi/tech/1215253576/ ■過去スレ その1 ttp://pc3.2ch.net/tech/kako/997/997345868.html その2 ttp://pc5.2ch.net/test/read.cgi/tech/1037636153/ その3 ttp://pc8.2ch.net/test/read.cgi/tech/1098268137/ その4 ttp://pc8.2ch.net/test/read.cgi/tech/1130984585/ その5 ttp://pc11.2ch.net/test/read.cgi/tech/1157814833/ その6 ttp://pc11.2ch.net/test/read.cgi/tech/1187008532/ OS・言語・環境は問わないが、それゆえ明記すべし。 テンプレ 【OS】 【言語】 【実行環境】 【その他特記する事項】
- 927 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 21:05:59.53 ]
- 既出か。メンゴメンゴ。
- 928 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 21:25:52.93 ]
- >>ゲームメインを物理〜
>それだと、論理コアが1つ遊んでしまいます。 何を言ってるのか分からなくなってきた。 論理コアをあそばせるのがもったいないほどCPUを使い切るマルチスレッド化が出来てるのか? もうちょっと詳しくどういう動作をさせてるのか、どういうスレッド構成になってるのか書いてくれ。 まさかCPUパワーが余ってるのに論理コアが遊んでるのは許せないとかとち狂ったこと言ってないよな、念のために聞くが。
- 929 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 21:29:09.18 ]
- >>928
どんな理由でもかまわないだろ・・・
- 930 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 21:44:51.68 ]
- 結局のところ>>924でどうにもならないんじゃないの?
- 931 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/02(月) 23:47:25.54 ]
- 元の質問に誰も答えないのは、万が一あったりするとアレだからだろうねぇ。
でも、さすがに無いと思うよ、そんなAPIは。 別な方法で妥協するしかないんじゃないかな。
- 932 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 07:42:04.28 ]
- あるか否かは、CPUのニーモニックコードのリストを見ればわかるよ。
そこに命令が用意されていないなら、CPUの内部状態をコントロールしようがない。 非公開命令が用意されている可能性は残るけどな。
- 933 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 11:36:54.07 ]
- 結局一緒じゃねーか。
あとそういうニーモニックがあるかどうかじゃ確実には分からんよ。 無いと思うけどね仕組み上から考えても。
- 934 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 14:07:48.98 ]
- なんでハードウェアの話になってしまったのかよくわかんないけど、
OS のスケジューリングの話じゃないの? こんなのとか。 ttp://kerneltrap.org/node/391 Windows も HT を意識したスケジューリングをしてくれればいいのにね。
- 935 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/03(火) 15:03:29.48 ]
- そりゃOSレベルじゃ制御してない部分の話だもん。
どころかハードレベルでも制御不能だろってのが優勢。
- 936 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 07:28:13.10 ]
- >>934
してるよ www.dosv.jp/feature/0912/04.htm APIでプログラマに公開されてるかは知らんが
- 937 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 10:42:53.69 ]
- 物理マルチコアにHTなんていらないんじゃないかな
- 938 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 10:44:43.96 ]
- HTをONにすると2000ではひっかかりまくるが、XPではスムーズ。
どうみても対応している。
- 939 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 11:02:06.05 ]
- ただlinuxみたいに同一物理コアの別論理コアに割り当てられたスレッドの優先順位を考慮して
タイムスライスの比率を変えるようなことはしてないね。
- 940 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 11:08:09.89 ]
- 別コアなのにタイムスライスって、スレッドを一時停止してるっことなんだが、
Linuxではそんなことしてるのか。逆にコスト高くつくんじゃないのか。
- 941 名前:910 mailto:sage [2012/04/04(水) 11:42:02.39 ]
- HyperThreadingは空いている演算器を有効に使うためのものなのに
メインで使っている演算器も奪ってしまうのはおかしいと考えており 別のOSでは実際にそれを回避するようにもなっているということで とりあえず安心しました。
- 942 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 13:07:41.32 ]
- なんというか・・・
同時に動かすから、空いてるのを有効に使えるのよ そして同時に動かせば他方を圧迫する 圧迫を回避する=片方を止める=空いてるのを使えてない なのよ
- 943 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 14:29:03.38 ]
- >>941
なってねーよ馬鹿かお前は。
- 944 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/04(水) 14:30:35.88 ]
- あいつは人の話を聞かないからなあ。
何でも都合よく解釈しやがる。
- 945 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/05(木) 13:36:26.86 ]
- そんな理論武装で大丈夫か?
- 946 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 15:00:20.07 ]
- pthread_rwlockの使い方をおしえて
- 947 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/06(金) 16:30:03.14 ]
- >>946
その前に聞くが、pthread_mutex_lockの使い方くらいは知っているのか? pthread_rwlockはそれより厄介だぞ。 www.tsoftware.jp/nptl/の図4が理解できないならやめとけ。 つーか、本当にrwlockが必要なのか?
- 948 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 15:36:21.96 ]
- 2CoreのCPUなら問題ないのに、
HTをONにするとフリーズしたり不安定になるプログラムって何が原因なんだろう?
- 949 名前:デフォルトの名無しさん mailto:sage [2012/05/11(金) 15:41:22.67 ]
- 複数のスレッドを使うプログラムだろうから、スレッド間の同期がいい加減なのだろう。
- 950 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 01:16:48.20 ]
- 同時に動くとまずいコードがあるんだろう
- 951 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 12:53:15.98 ]
- 2Coreなら大丈夫というのがおかしい。
- 952 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:07:54.49 ]
- 別におかしくないよ。
- 953 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:38:09.65 ]
- いやおかしい。
おかしくないなら、2CoreでOKで、HTだとダメなパターンプリーズ。
- 954 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:45:24.65 ]
- ドライバレベルなら昔あったな。
省電力でCPUクロックダウン/休止させる時にHTなので全部止まっちゃいました(テヘっ)ってのが。
- 955 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:47:28.79 ]
- 試してみて動いた=OKだと思ってるなら根本的に勘違いしてる
- 956 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:51:32.68 ]
- >>953
そんなこと考えてる暇あったら、HT時に起こってる問題を正確に掴むべき。 ちょっとしたタイミングの違いで動いたり、動かなかったりなんてのはいくらでもある。
- 957 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:53:22.20 ]
- おまえの勘違い半端ねぇ
- 958 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:54:19.83 ]
- たまたまの話ならどうでもいい。
頭の悪い突っ込みは必要ないから。
- 959 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 13:55:56.52 ]
- 突っ込みはしたものの、
HTだけダメなパターンはなに一つも思いつきませんでした。 ごめんなさい。
- 960 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 14:01:26.21 ]
- お前に思いつくかどうかなんてどうでも良いんだよ。
- 961 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 14:03:59.23 ]
- >ちょっとしたタイミングの違いで動いたり、動かなかったりなんてのはいくらでもある。
この原因は二つ。 ・同期処理をしていない。 ・同期処理が必要な部分を洗い出せていない。 HTがダメで2CoreがOKな理由になってないなぁ。 考える暇がないのか考える頭がないのか。
- 962 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 14:06:39.92 ]
- 相談スレで相談したら自分でやれって言う奴を相手にするな。
ただ煽りたいだけの馬鹿なんだから。
- 963 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 14:06:45.64 ]
- 現に原因不明の不具合を目の前にして、そんな事考えるだけ無駄だと分からないやつは開発向いてない。
- 964 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 15:03:57.50 ]
- 問題の起きるメカニズムを解明するのは興味深いが、
解明したところで自己満足以外に得られるものがないからな 結局きっちり同期するしかないんだし
- 965 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 15:05:54.53 ]
- 二つの処理が30ナノ秒以内に終わらないとタイムアウト
するウンコな処理があって2CPUだと偶然動いたとか。 KUSOなコードに論理性を求めるほうが時間の無駄。 単にHT環境で再現するという明らかな不具合を直せばよろしい。
- 966 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 18:26:42.65 ]
- Pen4の頃のHTを使っていた時は明らかに普通のデュアルCPUと
タイミングが違ってバグの出方も全然違ったよ >>965の言っているように運よく再現できる環境があるなら そこで治せばいいんじゃない
- 967 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 20:16:48.32 ]
- >>953
1スレッドがループ内でレジスタを使い切るパターンだろ フリーズまではいかんが、挙動が悪くなる
- 968 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 20:37:58.42 ]
- 自分で2CoreではセーフなのにHTをオンにしたら動かない!って言ってるのに、
「そんなパターンは無い!」とか分裂症ですか?って感じ。 そんなパターンがあるからその現象が発生してるのは明らかなのに。 現実逃避もいい加減にしろよ。
- 969 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 21:02:29.35 ]
- スペック厨で、自分の最強ハードに問題が有るって事が気に入らないんだろう
目の前で起きてる問題をどう解決するかが問題なんだがオタクは空気がよめないね
- 970 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 21:07:20.42 ]
- HTをオフにしたら動きました。
- 971 名前:デフォルトの名無しさん mailto:sage [2012/05/12(土) 21:19:10.76 ]
- >>953
void threadA(){ while(1); } void threadB(){ while(1); }
- 972 名前:デフォルトの名無しさん mailto:sage [2012/05/13(日) 02:00:44.76 ]
- それのどこがHTがダメなんだ?
- 973 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 09:08:39.75 ]
- >>971
シングルコアならOSがタイムシェアリングして均等に実行してくれる。 マルチコアならOSがそれぞれのコアに割り当てて均等に実行してくれる。 HTだとOSはそれぞれの仮想コアに割り当てて均等に実行しているつもりでも、 片方のスレッドが動いている間、もう片方のスレッドは満足に実行されない。 上のようなBusyLoop場合とくに顕著で、何もしない処理がCPUを占有する事になる。 これを防ぐために何もしないから他の仮想コアに処理を渡してよい事を示す 命令が追加されている。
- 974 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 16:30:14.82 ]
- htでもだいたい均等に割り振られるが。
- 975 名前:デフォルトの名無しさん mailto:sage [2012/05/14(月) 17:15:11.15 ]
- HT非対応なんだろ
- 976 名前:デフォルトの名無しさん [2012/05/18(金) 21:50:52.80 ]
- すいません。教えてください。
signalマスクをかけたスレッドの関数内で、popenをコールしてるんですが、ctrl+Cするとポインタ(NULLでないpopenの戻り値)からのfgetsが成功する時としない時があるんですが留意する事って何かありますか? ちゃんとpthread_joinは出来ているのでマスクには問題無いと思うのですが。 宜しくお願いします。
|

|