1 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 11:23:05 ] マルチスレッドプログラミングについて語るスレ。 OS・言語・環境は問わないが、それゆえ明記すべし。 その1 pc3.2ch.net/test/read.cgi/tech/997345868/ その2 pc5.2ch.net/test/read.cgi/tech/1037636153/ その3 pc8.2ch.net/test/read.cgi/tech/1098268137/
331 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 16:06:16 ] パイプ1個あたりバッファ1個の意味で言った 言葉足らずというか全然意味が通らないねスマソ
332 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 18:06:14 ] Java よく知らんのだが、これは要するに 4つのスレッドを3つのキューで繋ぎたい、って「だけ」の話?
333 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 18:34:54 ] YES
334 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 21:04:57 ] >>329 いやそうじゃなくてどんな処理で4スレッドの流れ作業なんて必要になるのか 想像がつかんのだ。
335 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 23:29:55 ] マルチ商法ですた
336 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 23:46:26 ] そんなもの想像つかなくていい。 質問に答えりゃそれでいいんだ
337 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 01:22:58 ] 関連する複数のタスクを回す場合は、個別に分けずに スレッドプールでまとめてやるのがいいんじゃないの? やろうと思えばExecuterServiceでも似たようなのできるけど。 □ タスク側 1. 自身のタスク終わったら次のCallableをsubmit()する。 2. 途中のタスクの戻り値としては次のFutureを返す。 3. 最後のタスクは流れ作業全体の値を返す □ 呼び出し側 1. ExecuterServiceに最初のCallableをsubmit()する。 2. Futureのget()がFutureを返した場合は置き換えてループする。 3. Future以外が返って来たら全タスク完了。 ただ、Callable中で次のタスクをsubmit()すると、バウンド形式なQueueで 最大スレッド数に制限が付いてるとデッドロックの可能性があると思われ。 これはExecuterServiceを流れ作業の数だけ作れば回避できそうかな?
338 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 01:58:33 ] >>333 d楠。 たったそれだけの事で、こんだけ盛り上がれるなんて なんの病気なんだ… >>334 それを実現する手段を知るためじゃね?演習問題みたいな。
339 名前:デフォルトの名無しさん mailto:sage [2006/02/16(木) 09:57:05 ] >>332 たぶんそう。それなのにbuffer二つとか言い出す奴もいて… そもそも質問があれだし。
340 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 12:51:20 ] みんなコロンブスの卵って知ってる? 「コロンブスの卵」は、「誰にできることでも、最初にするのが難しい」という意味で使われる。 1492年にアメリカ大陸(西インド諸島のサンサルバドル島といわれている)を発見したことで有名なコロンブス。 その功績を祝う晩餐会で、ある男が言った「西へ西へと航海して陸地に出会っただけではないか」と言った皮肉に 対して、コロンブスは卵を取り上げ、「この卵を卓の上に立ててごらんなさい」と言った だれも立てられないのを確認するとコロンブスは、卵のおしり(気室のある鈍端部と思われる)を食卓でコツンとた たいて立てて言った。「人がした後では何事も簡単です」 >>332 で、その「だけ」の話を理解できなかったのはどこの馬鹿だったっけ?( ´,_ゝ`)プッ
341 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 13:03:35 ] なにこの馬鹿…
342 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 13:13:45 ] ああ!この↑馬鹿か、その「だけ」の話を理解できなかったのは!
343 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 00:44:40 ] 文章から頭の悪さが滲み出ている。
344 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 12:29:01 ] ↑「だけ」の話を理解できなかったのが相当悔しかったんだね。( ´,_ゝ`)プッ
345 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 16:24:11 ] なんか雰囲気が悪くなってきたな。 元に戻そうぜ。 これって Aの生産量≦Bの生産量≦Cの生産量 だよね?でないとCとかDとかが結構待たされるんじゃないのかなーと。
346 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 21:50:29 ] ↑何もわかってない奴の典型だな!
347 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 22:38:57 ] と、必死。
348 名前:デフォルトの名無しさん mailto:sage [2006/02/18(土) 23:57:11 ] 荒している馬鹿は、>>322 の阿呆レスした奴?
349 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 03:12:23 ] ここにいるのは馬鹿ばっかだな
350 名前:デフォルトの名無しさん mailto:sage [2006/02/19(日) 03:15:52 ] >>345 ふいんき(←なぜか変換できない)戻そうと必死なのは分かるが 流れ作業なので Aの生産量=Bの生産量=Cの生産量
351 名前:332=338 mailto:sage [2006/02/19(日) 03:40:54 ] 荒らしの相手はやめようや。 >>334 今思い出したが、以前C++ on Windowsで似たような構成にしたことあったわ。 その時は通信スレッド×20→データベーススレッド×2→印刷スレッド×1だったが キューとミューテックス(各1)で小さいクラス作ったような覚えが。
352 名前:デフォルトの名無しさん mailto:sage [2006/02/20(月) 04:08:06 ] >>350 なんで? 極端な話、Aが2つの整数を流してBがそのxorを流したら半分じゃん。 まぁ別にそんなのはどうでも良くて、 単に4つスレッドを作らなくちゃいけない状況を想像して見たかっただけ。 邪魔してすまん。
353 名前:デフォルトの名無しさん mailto:sage [2006/02/20(月) 21:16:12 ] 10メガくらいのメモリをコピー(memcpyとか)するときに、 領域を分割してマルチスレッドにしたら速度上がる? マルチコアとかマルチスレッディングなら上がるかな?
354 名前:デフォルトの名無しさん mailto:sage [2006/02/20(月) 22:57:06 ] memcpy()だったら変わらない希ガス fread()とかで、あるスレッドでHDDからデータ読み込み中に、 前回読み込んだデータ解析を行うとかだったらスループットはあがると思う。
355 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 11:30:13 ] >>353 CPUが速ければ、 キャッシュを含めたバスシステムがボトルネックになるまでは上がる。 システム依存だから自分のターゲットにしているヤツで試してみて。
356 名前:353 mailto:sage [2006/02/22(水) 08:10:39 ] ありがとう。 でも本当はそんなメモリコピーしない設計にするのがいいんだよなorz
357 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 21:31:45 ] じゃあ、なんでそんな設計にならざるを得なかったのか、説明してみればいいじゃない。 メモリ参照だけで済むアルゴリズムを誰かが教えてくれるんじゃない?
358 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 22:06:40 ] writeで例外起こすようにしてcopy-on-writeだ
359 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 02:58:53 ] 設計したのは赤の他人。 ワタシはメンテ担当(涙)
360 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 17:25:34 ] >>359 その赤の他人よりも上手に設計できたとおもう?
361 名前:デフォルトの名無しさん mailto:sage [2006/02/24(金) 00:01:14 ] 何このウスラ馬鹿な突っ込み
362 名前:デフォルトの名無しさん mailto:sage [2006/02/26(日) 01:05:49 ] >>359 設計思想もわからん個所を、色々チューニングしようとしてるの? 悪いことは言わないから「やめとき」。
363 名前:デフォルトの名無しさん mailto:sage [2006/02/26(日) 01:08:10 ] 仕事じゃしょうがないよな。
364 名前:デフォルトの名無しさん [2006/03/03(金) 07:10:31 ] UNIXでC++なんですが、ttp://d.hatena.ne.jp/yupo5656/20041011/p3 ここに載っている、 スレッドローカルストレージを使ったシングルトンの実装って安全でしょうか? だいたいこんな感じになってます。 public: static T& getInstance(void) { static __thread T* tsd_instance = 0; if (!tsd_instance) { tsd_instance = getInstance_(); } return *tsd_instance; } private: static T* getInstance_(void) { boost::mutex::scoped_lock lk(m); if (!instance) { instance = new T; } return instance; }
365 名前:デフォルトの名無しさん mailto:sage [2006/03/03(金) 12:00:38 ] ISO C++の範囲内でポータブルな実装はないんだ。 >>291 を読め。
366 名前:デフォルトの名無しさん mailto:sage [2006/03/03(金) 23:44:47 ] >>364 安全ですよ。 getInstance_(void) が既に安全なわけで、 tsd_instance の方は覚えとくだけで、 かつ単一スレッドからしか参照されないので。 メモリモデルの問題については、 たぶんscoped_lock の解放でメモリバリアも処理されるんでしょう。 (pthread のドキュメント呼んでないのであてずっぽう)
367 名前:デフォルトの名無しさん mailto:sage [2006/03/04(土) 22:28:46 ] >365 364はDCL関係ないじゃん
368 名前:デフォルトの名無しさん mailto:sage [2006/03/04(土) 22:52:17 ] >>366 POSIXではmutexの開放はメモリバリア。
369 名前:デフォルトの名無しさん [2006/03/05(日) 00:20:02 ] >>364 例の www.nwcpp.org/Downloads/2004/DCLP_notes.pdf の最後のほうに > Replace global singletons with per-thread singletons: > - Each can use thread-local storage. > -- Threading concerns during initialization thus vanish. > - But now there are multiple "singletons." と書いてあって、TLSを364のようには使ってないのが気になります。 一方、 www.cs.umd.edu/~pugh/java/memoryModel/archive/0670.html でDoug Leaさんが364方式のTLSの使い方に文句を言っていない(条件 付きながら)ので大丈夫な気もします。まぁ、かなり昔のML投稿ですけど ね・・。 さて真相は?
370 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 16:07:01 ] >>340 普通の卵は比較的簡単に立つよな。表面に凹凸があるから。産みたてほど立ち易い。 ・・・コロンブスは卵をツルツルに磨き上げていたに違いない。
371 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 17:35:06 ] >>370 まあまあ。 コロンブスもギャグで言っただけなんだから許してやってくれ。
372 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 19:33:03 ] 後世の作り話ですから。 まあ>>340 は底抜けの馬鹿だけど。
373 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 14:35:11 ] ゆで卵にして高速で回せば立つよ。 まあ>>372 は底抜けの馬鹿だけど。
374 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 14:57:53 ] 盛り上がっているところ、横から突っ込んでスマンけど。 生卵を立てるには塩をごく少量盛って、その上に立てて、横から 息をゆっくり吹きかけて塩を飛ばすといいという話を聞いた。 とかいう本当にどうでもいい話をマルチスレッドスレでする 自分は底抜けの馬鹿ですw
375 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 19:27:05 ] つまり塩スレッドに卵スレッドをロックさせれば桶?
376 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 10:03:12 ] 卵スレッド発見
377 名前:デフォルトの名無しさん [2006/03/08(水) 20:55:31 ] つまらんよ >>369-376
378 名前:デフォルトの名無しさん mailto:age [2006/03/08(水) 21:34:40 ] 君ほどでも
379 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:26:59 ] ゆで卵の殻を剥かずに塩をかけるなんて、底ぬけの馬鹿ですね
380 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 03:03:29 ] 観光地のゆで卵は全部そうなってるよ
381 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 03:09:09 ] >>379 卵殻はNa+イオンもCl-イオンも透過するのでちゃんと卵に塩味がつきます。 溶けさえすれば。
382 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 15:12:11 ] ※注意: このスレはこの卵ネタで1000まで引っ張る覚悟です
383 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 15:22:01 ] たまごが立つという状態を定義してください。
384 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 16:21:34 ] ブスの卵
385 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 17:20:48 ] >>383 案1: 水平方向の任意の角度から卵を投影したときに、水平方向のスパンよりも鉛直方向のスパンの方が長い状態。 ただし卵が他の物体と接することができるのは下部のごくせまい部分のみとする(←うまい定義できないなこれ)
386 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 20:48:52 ] ポテンシャルの極大点。
387 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 21:13:15 ] あ、あんたなんかにたたれてもうれしくないんだからねっ!
388 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 00:28:56 ] >>383 おまいはコンピュータか? んなもん定義しないでも分かるだろ
389 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 03:03:47 ] クララが立った、と言う状態を定義してください。
390 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 03:04:39 ] 精神的な自立
391 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 03:21:15 ] それで泣ける、という状態を定義してください。
392 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 08:40:40 ] クララが勃った、と言う状態を定義してください。
393 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 18:55:33 ] クララが勃った クララは女である ∴よって勃ったのは乳首である
394 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 19:03:44 ] class clitoris extends electiliable {
395 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 11:42:52 ] >>394 なんだ、選挙にでも出るんか? …それを言うならerectibleだろ。
396 名前:デフォルトの名無しさん [2006/03/12(日) 16:25:47 ] Win32 Administrator権限で実行されてるプロセスからスレッドを起こすとき、 スレッドそれぞれに異なるユーザー権限を設定することは可能? プロセスごとならできるんだが。もし可能ならAPI名などヒントを頼む。
397 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 16:54:30 ] インパーソネーションとかいうんだっけ? ImpersonateLoggedOnUserとか。 まー、RevertToSelfとか呼ばれると、元に戻るけどね。
398 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 21:06:38 ] >>397 ありがd。 まだ試せてないが、MSDNの説明から目的に適うAPIのよう。
399 名前:デフォルトの名無しさん mailto:sage [2006/03/15(水) 14:41:37 ] なぁなぁ、 class Job extends Thread { public void run() {} } class MyJob extends Job { public void run() {} } ってあったらMyJobのrun()がJobのrun()をオーバーライドするんで Jobのrun()に書いてある定義とか全部無視されちゃうよね? ちゅーか、Jobのrun()の一行目に System.out.println("Hello? Hello? Can you read me?");//never displayed と書いても表示されないから間違いない。 でも、どうやったら両方のrun()とも動かすこと出来るんだろ?
400 名前:デフォルトの名無しさん [2006/03/15(水) 14:42:42 ] 一応ageとく。
401 名前:デフォルトの名無しさん mailto:sage [2006/03/15(水) 14:54:45 ] >>399 1つのスレッドで順番に動かしたいのか? MyJob.run() と Job.run() を別のスレッドで動かしたいのか? MyJob と Job のインスタンスをそれぞれ作ったらいけないのか?
402 名前:デフォルトの名無しさん [2006/03/15(水) 15:48:21 ] >>401 ありがと。 二番目の「別のスレッドで動かしたい」かな。 run()直接アクセスするとあかんのよね、.startで始めないと? どうしようかな?
403 名前:デフォルトの名無しさん mailto:sage [2006/03/15(水) 16:35:55 ] >>402 その手法が可能かどうかの前に、やろうとしていることに対して もっと単純な方法や、別の解法が無いか検討したらいいんじゃ ないかな。 ちょっと言語(Java?)の使い方から外れているみたいので、 本当にやりたいことが妥当かどうか見極めた方がいいと思う。
404 名前:デフォルトの名無しさん mailto:sage [2006/03/15(水) 22:37:56 ] >>399 super.run();
405 名前:デフォルトの名無しさん [2006/03/16(木) 09:59:17 ] >>403 確かにそうだったかもしれん。ありがと。 >>404 いや、直接run()にアクセスするのは禁(ry
406 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 14:36:26 ] Linux 2.4.31-0vl1.8smp + glibc-2.3.3-3vl1.3 pthread (linuxthread) プログラムでたまーに(でも確実に) seg fault してしまいます。 該当箇所は pthread_mutex_unlock(&mutex_sleep); という処理で、mutex_sleep はグローバル。core dump に聞いてみたらこんな返事が。 Program terminated with signal 11, Segmentation fault. #0 0x080551c7 in __pthread_alt_unlock (lock=0x80cb548) at spinlock.c:600 } else if ((prio = p_node->thr->p_priority) >= maxprio) { (gdb) bt #0 0x080551c7 in __pthread_alt_unlock (lock=0x80cb548) at spinlock.c:600 #1 0x08051fc9 in __pthread_mutex_unlock (mutex=0x80cb538) at mutex.c:199 #2 0x0804e3cc in send_proc (arg=0xc) at send_proc.c:112 #3 0x08051709 in pthread_start_thread (arg=0xbdbffbe0) at manager.c:309 何か情報ありますか?
407 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 20:44:16 ] mutexがすでに死んでるとか?
408 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 22:30:14 ] Windows Threadについて質問です。擬似コードですが、 Thread[] threads = getAllThread(); foreach (Thread t; threads) { t.suspend(); } このような全てのスレッドを止めるためのループがあるとします。 このループ中では、既に止められているスレッドと、 これから止められる予定のスレッドがあると思うのですが、 これから止められる予定スレッドが、既に止めたスレッドを再開(resume)するため、 このループでは全てのスレッドを止められない、ということは起こりえるのでしょうか?
409 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 22:36:16 ] >>408 起こりうるでしょうね。 避けたいのならばまず自分の優先順位をトテモ高くして、 その後ループに入れば良いと思います。 先方のスレッドも優先順位を上げている恐れがあるのならば 完全ではありませんが。
410 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 22:36:36 ] 知らね。 だって、普通そんな造りにしないもん。 普通は、終了しろ、っていう合図を各スレッドに送って 自主的に終了なり中断なりするのを待つだけだから。
411 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 22:37:03 ] 起こりえる。 おまけにこれから止めようとするスレッドが新たにスレッドを作るかもしれない。 全スレッドで、「スレッドマネージ用ミューテックス」などを使用すればいいんでない?
412 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 22:39:04 ] 他のスレッドを suspend するってのはまず間違いなく設計ミス。 C のランタイムとか Windows に用意されているいろんな dll の 内部まで良く知っていて、何か大事なものの所有権を持ったまま suspend されちゃったりすることはないと確信を持っているなら 別だけど。
413 名前:408 mailto:sage [2006/03/16(木) 22:46:12 ] どうも。 実は、これのpause版とresume版がD言語の標準ライブラリの中にあって、 GCを呼ぶ前にそれでスレッド止めて、後に再開ようとしているみたいなのですけど、 それのへんでアプリケーション側で実装しているスレッドの同期が変になるみたいです。 安心できませんが、安心しました。
414 名前:408 mailto:sage [2006/03/16(木) 22:52:58 ] スレッドを止める仕様はどうしようもないのですが、 とりあえずは、全てを止めるループ中(pauseAll)に pause()、resume()とstart()が実行されないように排他とと 全てを再開(resumeAll)中に、resume()が実行されないように 排他したら大丈夫ということでしょうか?
415 名前:デフォルトの名無しさん mailto:sage [2006/03/16(木) 23:01:54 ] >>414 GC 側が単純なメモリ操作などだけで、 他の処理で使っている(かもしれない)セマフォやミューテックスなどの 所有権なしで実行できるとするなら、問題ないはず。 例えば(MSのドキュメントを信用するなら)Windows API の OutputDebugString は、 内部で他のスレッドを全て Suspend した上でデバッグメッセージの送信を行い、 そののち Resume する、と同様の処理を行っているようです。 AP側のスレッドが変になるのはAP(or Dの何か他のライブラリ)のバグではないでしょうか。
416 名前:408 mailto:sagee [2006/03/16(木) 23:28:41 ] >>415 resumeThreadの戻りを見ながら、他スレッドのsuspend待ちをしている箇所があるので、 それが、排他されていないresumeAll中に走ると、 GCが止めてこれから再開する予定のスレッドを、 "アプリケーションが思っている理由"でsuspendしたのだと 勘違いして変になるのだと思っています。
417 名前:デフォルトの名無しさん mailto:sage [2006/03/17(金) 06:51:35 ] >>407 ありがとうございます。 pthread_mutex_destroy は呼んでいないので生きていると思っていたのですが、どうやら syslog(3) が関係しているようです。別の core dump に聞いてみたら syslog 関数で死んで いるケースが見つかり、付近の syslog(3) をはずしたら seg fault することはなくなりました。 syslog(3) と pthread (linuxthread) は混ぜるな危険とかいう話があるんでしょうか。 とりあえず syslog を自前で用意することにしてみます。
418 名前:デフォルトの名無しさん mailto:sage [2006/03/17(金) 07:20:23 ] その環境ではsyslog(3)はMT-Safeじゃないのに、排他してないだけとか
419 名前:http://www.vector.co.jp/soft/win95/util/se072729.html [2006/03/18(土) 19:49:50 ] TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
420 名前:デフォルトの名無しさん [2006/03/28(火) 00:13:15 ] こんな問題助けてください。 I/Oバウンドな処理をする処理プログラムが2個 CPUバウンドな処理をするプログラムが1個 それぞれCPUは85〜95%占有するほど負荷が大きいです。 またそれぞれI/O処理は多重スレッドはなく2つの独立した スレッドプログラムです。 Xeon 64bit x2 (64bitSMPカーネル+ HTTでCPU4個) Xeon 32bit x2 (32bitSMPカーネル+ HTTでCPU4個) Opteron 252 x 4(64bitSMPカーネル) Opteron 252 x 4(32bitSMPカーネル) いずれの場合も、CPUを占有したいと考えるならばcpu_affinityを ハードウェア的に割り当てるべきなのでしょうか。 それともカーネルのSMP処理に任せるべきなのでしょうか。
421 名前:デフォルトの名無しさん mailto:sage [2006/03/28(火) 06:09:38 ] page outないくらいメモリが十分にあると考えると、 (OSによってはI/Oキャッシュがメモリを食い潰してしまいますが) I/Oバウンドな処理をするプログラムにCPU割り当てる意味ないでしょ。 けど、 > それぞれCPUは85〜95%占有するほど負荷が大きいです。 で「I/Oバウンド」なの? それからマルチスレッドじゃないw
422 名前:デフォルトの名無しさん mailto:sage [2006/03/28(火) 12:47:04 ] >>420 CPU占有を占有したいなら、邪魔しに来る恐れのあるほかのプロセスは どれか他のCPUに割り当てるべき。 CPUを占有することの利点は、 ・他のCPUでの処理の邪魔をしない ・各CPUが独立した2次キャッシュを持っているとき、キャッシュの汚染に よるパフォーマンス低下を避けられる(かもしれない) の2つくらい。 カーネルに任せるべきかどうかはなんともいえない。 プログラムの性格にもよるし、カーネルのスケジューラーの実装にもよる。
423 名前:420ではない mailto:sage [2006/03/29(水) 00:15:05 ] ぶっちゃけ聞きたいんだが、 「cpu_affinityをハードウェア的に割り当てる」 って、現在存在するOSの中でどれよ?
424 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 15:54:42 ] C++で質問ぬ beginthreadexで作ったスレッド exitthreadexしないで スレッド関数return で終了して CloseHandleしても問題ないですか? サンプルで exitthreadをreturn の前に呼んでるのと 呼んでないの があったので
425 名前:デフォルトの名無しさん mailto:sage [2006/04/04(火) 16:29:21 ] >>424 寧ろ、exitthreadするとC++のデストラクタが走らないので問題になりがち。 極力returnするべき。
426 名前:デフォルトの名無しさん [2006/04/06(木) 01:56:06 ] 世はSPEでプログラミングしたいのじゃ
427 名前:デフォルトの名無しさん mailto:sage [2006/04/06(木) 13:02:49 ] >>423 つ z/OS
428 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 00:01:57 ] 世界で始めてデッドロックを実際に経験した人って誰だろう。 あまりにもの恐ろしさに震え上がったことだろう。
429 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 21:33:59 ] 俺
430 名前:デフォルトの名無しさん [2006/05/06(土) 22:23:42 ] 哲学者よフォークを取れ!!
431 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 23:33:04 ] 先生、フォークが足りません!!