- 1 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 19:26:16 ]
- マルチスレッドプログラミングについて語るスレ
■前スレ マルチスレッドプログラミング相談室 その6 ttp://pc11.2ch.net/test/read.cgi/tech/1187008532/ ■過去スレ その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/ OS・言語・環境は問わないが、それゆえ明記すべし。 テンプレ 【OS】 【言語】 【実行環境】 【その他突起する事項】
- 91 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:48:00 ]
- CPU稼働率落ちそうだな。
- 92 名前:86 [2008/08/25(月) 22:44:47 ]
- 解決した。
pthread_condとかつかわずに セマフォで普通に組めるのね。 ありがと。 >>87 うん >>88、89 そこでヒントがほしかった>< >>90 簡単な仕組みにしたいっすね。 >>91 ですね
- 93 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:33:52 ]
- 簡単にCreateThreadできるようになるクラスとかないかな
- 94 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:43:39 ]
- boost::threadとか?
- 95 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:11:50 ]
- データ処理部分とHDDから読み込み&書き込み処理部分ってスレッド分けた方が効率上がると思うんですが、
HDDのIO部分自体は分けないで一つのスレッドでやった方が効率いいですよね? 2つの異なるHDDから読み込み&書き込みする場合はHDD毎にスレッド作った方が効率いいですよね? 間違ってたら指摘お願いしますm(_ _)m
- 96 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:21:44 ]
- >>95
ドライバはカーネルが動かす。従って、CPUが複数(或いは複数コア)あるなら ユーザアプリとは並列に動ける。おまけに、ディスク自体にもバッファがあるから普通は余り意識しない。 まして一般的にディスクの方が圧倒的に遅いから、HDD毎にスレッドを作るなんて事はしない。
- 97 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:23:45 ]
- 追記です。二つ目の質問は
「一つのHDDから複数のデータを読み書きするとき、データごとに別スレッドにはしないべきか」と言う意味です 宜しくお願いします
- 98 名前:デフォルトの名無しさん [2008/09/09(火) 15:33:43 ]
- HDDは遅いから複数スレッドの方がいい
HDD1が終わるまで待っている時間が無駄
- 99 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:38:58 ]
- 早速回答ありがとうございます!
しかし>>96と>>98の言っていることが逆に見えて混乱しています たとえカーネルが実際のIO等を行ってるとしても、読み込み終わるまでアプリは待機しますよね? IO毎にスレッドを分ければその間CPUはアイドル状態にならずに効率が上がるかと思うのですが・・・ しかし、同じHDDで読み書きするデータごとにスレッドを分けるのは流石にやりすぎですよね^^;
- 100 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:43:03 ]
- >>99
>95はI/Oに限定した話じゃないの? I/Oしかやることがないならスレッド分けたって待つだけじゃん。 処理とI/Oを分けるかって話なら処理がI/Oに依存しないで済むなら分けておいたら? ってことになる。
- 101 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:47:51 ]
- 一番初めに
「データ処理部分とHDDから読み込み&書き込み処理部分ってスレッド分けた方が」 って書いてあるだろ
- 102 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:22:13 ]
- >>100
ありがとうございます。処理とIOを分けたかったんです。 処理とIOは依存しないわけではないのですが、パイプライン式に順次並列処理しようかと思います。
- 103 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:33:02 ]
- 読みながら処理しながら書くの?
読んでから処理してから書くの? 読みながら処理してから書くの?
- 104 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 17:26:37 ]
- こんな感じで実行予定です
以下同行は並列と見てください HDD1からDATA1読み込み HDD1からDATA2読み込み DATA1の処理 HDD1からDATA3読み込み DATA2の処理 HDD2にDATA1書き込み HDD1からDATA4読み込み DATA3の処理 HDD2にDATA2書き込み DATA4の処理 HDD2にDATA3書き込み HDD2にDATA4書き込み
- 105 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 17:46:11 ]
- マルチスレッドなんて使わずに非同期入出力で
- 106 名前:デフォルトの名無しさん [2008/09/09(火) 18:30:45 ]
- 非同期でOSまかせが速い、効率いいとはいえない。
データをまとめて出力するなどキャッシュを作った方が速い。 10Kを一万回やったら非同期でも時間かかる
- 107 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 09:47:23 ]
- 読み込んだデータをクラスに展開しないといけないので、非同期読み込みだと
メモリを最悪倍近く無駄に食うような気がしたのでこの方法がいいかと思ったのですが・・・ また、細切れに読み込んでも連続したデータであればキャッシュは効くと聞いたことが あるんですがそれも違うのでしょうか?
- 108 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 04:25:04 ]
- 先読みに頼るぐらいならまとめて読め
- 109 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 17:42:38 ]
- >>107
win32なら、ファイルを開くときのオプションでキャッシュに連続の先読みを指示するオプションがある。 基本的にAPIの呼び出し回数を減らすのが速い
- 110 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 15:57:55 ]
- 並列動作で効率を高めるため、最適な数のスレッドを生成したいのですが
コア数を取得するAPIが見つからなくて困っています。API等では用意されていないのでしょうか
- 111 名前:デフォルトの名無しさん [2008/09/12(金) 16:07:37 ]
- なんのことはない,Win32の GetSystemInfo() を叩けばいいらしい
SYSTEM_INFO構造体を受け取って dwNumberOfProcessorsメンバーにコア数が入っているとのこと gurizuri0505.halfmoon.jp/20080806/2423
- 112 名前:デフォルトの名無しさん [2008/09/12(金) 16:09:23 ]
- www.usefullcode.net/2006/12/apios.html
- 113 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 16:48:59 ]
- 即レスさんくす!
無事取得できましたm(_ _)m
- 114 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 04:35:56 ]
- タスクマネージャのパフォーマンスグラフみたいに、
コア毎の負荷(使用率)を知りたいのですが、 簡単に取得する方法はありますか?
- 115 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 09:40:30 ]
- 環境次第
- 116 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 10:59:05 ]
- マルチスレッド用の効率的なQueueを書いてください
- 117 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 11:53:09 ]
- 状態変数の練習にはいいんじゃね
- 118 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 11:59:21 ]
- lock free queue
- 119 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 12:28:10 ]
- プライオリティキューを
マルチスレッド化したいです
- 120 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 15:09:44 ]
- pthread_cond_wait()が遅くて
しょりがおいつかないときって 大体方法何かないですか たすけて〜〜〜
- 121 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 15:32:57 ]
- どうやって遅いって調べたんだ
つかwaitしてるようで実はポーリングになってるとかいうオチじゃなかろうな
- 122 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 09:07:18 ]
- 私たちはマルチスレッドですか?
- 123 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 09:19:12 ]
- >>122
精子はマルチで卵子に向かいますが 卵子は基本的には一匹入ったらLockをかけるので 通常はシングルで動きます でも、時々Lockに失敗して双子以上ができる場合があるので注意が必要です
- 124 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 09:53:22 ]
- マルチスレッドと言うより、
イベントドリブンというか、割り込み駆動な感じだな。
- 125 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 12:27:29 ]
- NMI最強
- 126 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 15:54:58 ]
- 今日のわたしはモード2なのよ
ttp://www.youtube.com/watch?v=gpzCBUwU_Ys
- 127 名前:デフォルトの名無しさん mailto:age [2008/10/05(日) 11:44:01 ]
- 複数スレッドのプログラムへのCPUコアの対応としては>>44とのことですが、
コア数を設定できるソフトの場合、4コアCPUなので4コアを設定したとしても OSが状況に応じてそれより少ないコアで処理させてり、というようなことが 起こってしまうのでしょうか?
- 128 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 12:05:42 ]
- >>127
ユーザープログラムを4コア設定にしようと OSが割り当ててくれないかぎり無駄。
- 129 名前:127 mailto:sage [2008/10/05(日) 12:10:42 ]
- >>128
なるほど・・・ いちおう4コアとか設定はできるものの、それは「4スレッド以上使うプログラムで実行しますよ」ということであって、 OSによりコアに手空きがあれば初めて実現することなんですね。 勉強になりました。 そうすると「このプログラムは2コアまで対応してるからCPUは2コアのものを購入」となるところを、余裕を見て 4コアCPUにしておく、という考え方が有効になるわけですね。 勉強になりました。 ありがとうございました。
- 130 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 17:18:13 ]
- 有効ってまあ有効と言えば有効だけどあまり有効って感じじゃない。
- 131 名前:デフォルトの名無しさん mailto:sage [2008/10/05(日) 21:55:34 ]
- 裏で200も300もスレッド走ってなきゃ
2コアでも4コアでも指定したスレッド起こせるだろw その実装がスケール可能かつ性能どれだけ伸びるか考えろよw
- 132 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 11:30:00 ]
- 余り細かい話になると、OSとCPUを特定しないと意味がなくなる気がするのだが。
因みにLinuxの場合、Gnomeが、ひいてはXが動いているとそれだけで1コア占有するくらいパフォーマンスが落ちることもあるので注意。 # 今時、それほど酷くないけどね。
- 133 名前:デフォルトの名無しさん mailto:sage [2008/10/06(月) 22:25:18 ]
- >>132
それこそKernelとGnomeのバージョン言えって 話だけどな
- 134 名前:デフォルトの名無しさん [2008/11/03(月) 14:53:14 ]
- pthread に、スレッドが pthread_cond_wait で待ち状態にあるかを判定する関数はありますか?
- 135 名前:デフォルトの名無しさん [2008/11/03(月) 14:56:13 ]
- pthread に、スレッドが pthread_cond_wait で待ち状態にあるかを判定する関数はありますか?
- 136 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 15:03:28 ]
- 2回書き込んでしまった。すんません。
- 137 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 15:11:31 ]
- 大事なことだからしょうがない
- 138 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 15:20:31 ]
- 大事なことだからしょうがない
- 139 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 15:27:32 ]
- して、待ち状態は判定できるんですか?
- 140 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 15:58:00 ]
- A.問い合わせる
B.返事来る C.返事が甲なので甲とみなした処理をする んでB〜Cの間に乙になってて発狂する予感
- 141 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 21:35:35 ]
- >>135
wait状態を取得する関数があったとしても、現在もその状態である保障は無いね。
- 142 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 12:19:49 ]
- 状態を取得した一瞬後には状態が変わってるかもしれんしな
- 143 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 12:52:40 ]
- pthread_cond_waitの引数のmutexを使えばできそうな。
pthread_mutex_trylockでmutexがロックできたらwait中。
- 144 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 00:02:01 ]
- トランザクションメモリの実装について
くわし〜〜くかいた本ある?
- 145 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 01:02:19 ]
- >>144
「Transactional Memory」 くわし〜〜くはないがたくさんは載ってる
- 146 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 00:02:30 ]
- >>143 wakeupしたあとにCPUがまわってくるのを待ってる状態という場合もある
- 147 名前:デフォルトの名無しさん [2008/11/09(日) 01:48:11 ]
- デバイスとの非同期処理の為に、別スレッドでポーリングしているんだが、
ポーリング関数内で、select -> read の処理を丸ごとロックしてる。 書き込みは メインスレッド内でロックして write 。 一応動いてるんだけど、どうも自信がない。 間違って select なりmutex なりを使っている気がする。 こういう類いの処理ってどういう本読めばいいのかな。 何かアドバイスください。
- 148 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 11:21:59 ]
- それだと、ポーリング用スレッドがselect+readでロックしている間、
メインスレッドがロックを獲得できない(writeできない)気がするがどうか。 select実行中のロックは不要だろう。 ただselect用のFD_SET作成中はロックがいる気がする。 みたいな。
- 149 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 16:25:47 ]
- >>147
情報が少なくてよくわからないけど、とどのつまり、何のために ロックしなくちゃいけないかってこと次第 read と write が同時に発行できるならロック不要だし、 同時に出来ないなら、そのルールに合わせてロック入れる。 あと、多分、 select は不要なんじゃないかね
- 150 名前:デフォルトの名無しさん [2008/11/09(日) 16:46:16 ]
- 関数型言語だと具体的にどういう風にマルチスレッドに最適なの?
去年あたりからErlangとかScalaとかHaskellとかが話題になってて気になる。 全ての関数がワーカスレッドベースになるとかそんなとんでも話じゃないよね?
- 151 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 17:42:57 ]
- STM難しい
やる夫助けてくれ
- 152 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 18:05:32 ]
- >>150
第五世代コンピュータでヤフれ
- 153 名前:デフォルトの名無しさん [2008/11/09(日) 20:00:16 ]
- すみません。言語としてWinAPI(C言語)、C#、Javaを覚えたのですが(どれもGUIやファイル操作、DB接続ができる程度のレベルです。あとネットワークも少々)
スレッドプログラムを次はマスターしたいのですが、どの言語でスレッドを学ぶのが一番いいですか? ひとつ覚えたら残りの言語も覚えたいと思っていますので、とっかかりに一番いいのをおしえてください。 よろしくお願いします。
- 154 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:11:20 ]
- Java
- 155 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 20:29:50 ]
- >>153
どれでもいいよ。そんな取り立てて挙げるほど大層なもんじゃない。
- 156 名前:デフォルトの名無しさん [2008/11/09(日) 20:52:34 ]
- まぁJavaかC#だな。C言語でやるとLockが面倒だし
- 157 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 22:39:47 ]
- だね。
スレッドに絡む部分、概念の学習に専念できるという意味でも、 JavaかC#辺りがやりやすいと思う。
- 158 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 22:42:28 ]
- 良書が揃ってるのはJavaだからJavaにしとけばいいと思うよ
- 159 名前:153 mailto:sage [2008/11/09(日) 23:06:46 ]
- みなさんどうもありがとうございます。>>156さん、WinAPIでやるとちょっと面倒なんですね。
なるべく単純な概念だけを覚えたいので、C#かJavaにしようとおもいます。 でも、>>154サン以降全員Javaが候補に入ってるのでJavaにしようとおもいます。 いまから、本屋にいって立ち読みしてきたいとおみます。みなさん、ありがとうございました。 念願のスレッドプログラムの第一歩を踏み込めそうです。
- 160 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 11:33:47 ]
- ところでおまいらhyukiの
『Java言語で学ぶデザインパターン入門マルチスレッド編』 っておすすめでしょうか?
- 161 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 11:45:24 ]
- Java固有の話とそうでない話を見分けるつもりで読むといいよ
- 162 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 12:08:45 ]
- 並行プログラムの本がある、おすすめ。
- 163 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 17:09:52 ]
- >>160
入門書としてはベスト。それ卒業したら「Java並行処理プログラミング」
- 164 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 18:30:24 ]
- JavaってマルチCPUなりコアなりの環境でもシングルCPUしか使えない
と認識してるけどあってる?
- 165 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 18:31:56 ]
- あってる
グリーンスレッドっていう環境にやさしいスレッド方式があって、 デフォルトはそれになってる
- 166 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 18:46:24 ]
- グリーンスレッドなのはjavaの最初の版だけだったと記憶してるけど、
今でも切り替えられたっけ?
- 167 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 19:23:04 ]
- >>165
十年前から乙。 >>166 無理。グリーンスレッドとネイティブスレッドの切り替えがあるのはClassicVMで、HotspotVMはネイティブスレッドのみ。 で、ClassicVMはJava1.4あたりで切られたようだ。
- 168 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 21:01:28 ]
- 1.2 ぐらいまではずっとグリーンスレッドだった。
最初の版だけなんてことはない。
- 169 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 23:05:10 ]
- WroxのProfessional Multicore Programming
ってCore2とかAMDのCPUのことも書いてあるんだな
- 170 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 00:42:41 ]
- pc.watch.impress.co.jp/docs/2008/1107/winhec2_02.jpg
これをうまく制御するプログラミングが知りたい
- 171 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 00:48:22 ]
- >>170
Intelのパフォーマンスライブラリに期待しよう
- 172 名前:デフォルトの名無しさん mailto:sage [2008/11/11(火) 10:48:50 ]
- >>170
すげー ビリー・ミリガンみてーだな
- 173 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 04:44:45 ]
- >>170
元気なプロセスをいっぱい動かせば良いだけのような気もする。
- 174 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 07:02:25 ]
- 同じアドレスに一斉に読み書きするとか
同じロックを一斉に取得、解放するとか そういうループをブン回して どうなるか観察したい
- 175 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:36:35 ]
- >>170
スレッドを192個作る。 各スレッドのaffinityを設定して、CPUに貼り付ける。 特定のスレッドのセットをビジーループにして、タスクマネージャに文字を出す。
- 176 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 00:47:04 ]
- >>175
> 特定のスレッドのセットをビジーループにして、タスクマネージャに文字を出す。 ビルのイルミネーションみたいでいいね!
- 177 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 09:57:17 ]
- winで1プロセスに64コア以上ってどうやるんだっけか
- 178 名前:デフォルトの名無しさん mailto:sage [2008/11/17(月) 20:48:06 ]
- >>177
>Windows 7/Windows Server 2008 R2 では 64 論理 CPU をひとつの "グループ" と定義し, >プロセスは初期状態で "グループ" のどれかに束縛されている(どのグループに属するかはラウンドロビンで決定される). >そして,新しく定義された API で明示的に許可を与えない限り,プロセス内のスレッドは >所属 "グループ" の CPU でのみ実行される. >つまり,新しい CPU グループ制御 API を使用しない限り,ひとつのプロセスは高々 64 個の >プロセッサしか活用しない. ttp://d.hatena.ne.jp/NyaRuRu/20081107/p1
- 179 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 11:06:48 ]
- 窓7が主流になる頃には64コアCPUとか出てるって事?
凄いな
- 180 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 11:14:12 ]
- マルチCPU
- 181 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 11:30:11 ]
- 8コア*8CPUでやっと64
4CPUのマザーは見たことあるけど…
- 182 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 13:20:57 ]
- ブレードにすればよかろう。
- 183 名前:デフォルトの名無しさん mailto:sage [2008/11/18(火) 22:01:52 ]
- コンシューマ向けの話じゃないのか
- 184 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 00:25:44 ]
- て言うか、ブレードってブレード毎にOSが載ると思うが。
8ブレードとかを1つのOSで制御できる奴なんてあるのか?
- 185 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 00:37:32 ]
- >>184
www.hitachi.co.jp/products/bladesymphony/product/bs1000.html インテル Itanium プロセッサー搭載サーバブレードでは、バックプレーンの 高速インターコネクトを介し最大4枚のサーバブレードをSMP接続することで、 最大8プロセッサ(16コア)のSMPサーバーとしても利用可能。 h50146.www5.hp.com/products/servers/nonstop/hardware/NB50000c/index.html 最新のデュアルコア インテル Itanium プロセッサ(9100シリーズ)を最大4,080個搭載可能
- 186 名前:デフォルトの名無しさん mailto:sage [2008/11/19(水) 07:36:32 ]
- >>185
これ買おうかな やっぱ自宅警備にはこれくらいのマシンがないとな
- 187 名前:デフォルトの名無しさん [2008/11/20(木) 17:32:02 ]
- int i;
for( i=0; i<10; i++ ) { h = CreateThread ( NULL, 0, (LPTHREAD_START_ROUTINE)DoIt, NULL, 0, &id ); } void WINAPI DoIt() { // ここでいろいろ } のようにして同じ関数を複数のスレッドで行いたいのですが ここでいろいろのところに制御がいかず すぐにスレッドが終了するのですが 同じ関数をスレッドで実行することはできないのでしょうか? WindowsXP C/C++ Win32API
- 188 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 17:47:14 ]
- >>187
まず先に突っ込んでおくが、LPTHREAD_START_ROUTINEと 合わない関数をキャストで無理矢理渡すな。 DoIt()がLPTHREAD_START_ROUTINEに適合する関数なら キャストなんて必要ない。 すぐにスレッドが終了するってのは、どうやって確認した? CreateThreadを呼んだメインスレッドは、各スレッドが仕事を 終えるまで待機している? そもそもDoIt()がすぐに終了する内容じゃないの?
- 189 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 18:09:42 ]
- >>188
すいません 処理の流れがつかめてませんでした 解決しました
- 190 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 18:18:19 ]
- 便乗して質問ですが
WindowsXP Home Edition にて作成するスレッド数の上限はありますか?
- 191 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 18:26:58 ]
- msdn.microsoft.com/ja-jp/library/cc429080.aspx
> 1 つのプロセスが作成できるスレッドの数は、利用可能な仮想メモリによって制限されます。 > 既定では、各スレッドに 1MB のスタック空間が割り当てられています。 > そのため、最大 2,028 個のスレッドを作成できます。
|

|