[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/21 03:04 / Filesize : 243 KB / Number-of Response : 977
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

マルチスレッドプログラミング相談室 その8



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】
【言語】
【実行環境】
【その他特記する事項】

244 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 14:06:45 ]
そこでeioioですよ!

245 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 14:07:20 ]
間違えた、eieioだった
イーアイイーアイオー!

246 名前:デフォルトの名無しさん mailto:sage [2009/12/23(水) 14:28:55 ]
エイッエイッオッー

247 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 12:32:01 ]
この辺の話題が体系的に書かれてる教科書が欲しい

248 名前:デフォルトの名無しさん mailto:sage [2009/12/26(土) 14:41:39 ]
開拓が進行中のジャンルだから、書いたそばから陳腐化しそうでなかなか難しいかも
しれないな

249 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 15:09:39 ]
何をもって高性能とするかをはっきりさせたいな
シングルコア100%アイドル3コアでできることを4コア25%ずつで処理することに意味はあるの?

250 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 15:12:36 ]
>>249
に追記
並列処理の有利はわかるけど、これからは直列処理も並列化しようとしてるんでしょ
そんなの意味ないよねという話

251 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 15:50:00 ]
1コア100%3コア0%ってCPUがボトルネックになってんじゃねーの

252 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 15:50:26 ]
何を言ってるの?




253 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 21:19:08 ]
>>249は軽くエスパーが日本語に翻訳しないと分かりづらい

4スレッドにしたら全部25%になっちゃうような処理までマルチスレッドにする
意味あんの、って言いたいんだろうし、だからCPU屋は2コアや4コアで現状維持
しながら別の進化の方向性を探ってるのも事実
だがそもそも、そういう微妙なケースにまで頑張って適用しようぜMTマンセー、
というようなスレではないので、そんな的外れなこと言われても一瞬何の話だか
分からんし、今更何をとしか言いようがない

254 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 21:28:43 ]
>>253
日本語でおk

255 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 21:35:30 ]
>>253
余ってるCPUに仕事振る余地のない処理なら
それでいいんじゃね?


256 名前:デフォルトの名無しさん mailto:sage [2009/12/31(木) 21:39:14 ]
>>249の問題提起自体が微妙
アムダールの法則くらいで十分じゃねーの?

257 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 18:49:32 ]
そもそも並列化できない処理まで並列化しようとしてるなんて話は聞いたこともない。
誰が言ったんだそんなこと。


258 名前:デフォルトの名無しさん mailto:sage [2010/01/03(日) 21:49:55 ]
>>249が言ってるな

259 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 03:00:47 ]
質問させてください。
【OS】 UNIX/LINUX
【言語】 C言語
【実行環境】 gcc
【その他特記する事項】
メインスレッドからn個のスレッドを作成->全ての終了を待つという場合、
int i;
pthread_t id[n];
void* res[n];
for (i=0; i<n; i++)  pthread_create(&id[i], NULL, funcptr, arg);
for (i=0; i<n; i++)  pthread_join(id[i], &res[i]);
こんな感じで大丈夫でしょうか?
それとWindowsにあるWaitFor〜みたいに複数待つというのは無いのでしょうか?

260 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 03:18:30 ]
>>259
>WindowsにあるWaitFor〜みたいに複数待つ

developers.sun.com/solaris/articles/event_completion.html

261 名前:デフォルトの名無しさん [2010/01/26(火) 00:12:16 ]
スレッドを終了させないままアプリを閉じた場合
やっぱメモリリークとか起きるの?


262 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 00:20:29 ]
環境を想定しないとなんともいえない。



263 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 00:33:22 ]
>>261
OS破壊されるぞ?いいのかそんなことしても

264 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 00:49:27 ]
>>261
ja.wikipedia.org/wiki/メモリリーク

265 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 10:22:10 ]
破壊されるようなOSなんか使うなw

266 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 16:03:33 ]
MTでそんな脆いOSはちょっと想像付かないなw
携帯の奴とかはどうなんだろう

267 名前:デフォルトの名無しさん [2010/01/26(火) 16:15:09 ]
問題(1) 名前を入れる入力ダイアログ1つとボタンを1つ表示し,ボタンを押したときは時間に応じて,
 05時〜11時 「おはようございます,○○さん」
 11時〜17時 「こんにちは,○○さん」
 17時〜05時 「こんばんは,○○さん」
と表示するJavaScriptプログラムを作成しなさい。

268 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 16:20:40 ]
断る。

269 名前:デフォルトの名無しさん [2010/01/26(火) 16:24:21 ]
キミの実力を見せてみろ

270 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 16:28:23 ]
マルチスレッドと何の関係が

271 名前:デフォルトの名無しさん [2010/01/26(火) 16:32:31 ]
スレ違いでした。
すいません・・

272 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:10:35 ]
VCでマルチスレッドアプリをトレース実行してるとかなりの頻度でOSごと固まるんですが、
マルチスレッドの場合のデバッグはデバッガ使わないのが普通なんですか?



273 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:48:30 ]
PCが貧弱

274 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:05:06 ]
嫁が貧乳

275 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:13:39 ]
ユーザが頻尿

276 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:19:25 ]
>>272
詳細なテキストサービスをオフにすると少し幸せになれるかも。
ATOK使いの俺には無縁な話。

277 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:21:31 ]
最近スレッド使い始めました。
クリティカルセクションとかインターロックで変数を共有するのは
なんとなく分かりました。
例えばCRITICAL_SECTIONを使う場合、アプリケーションで一つ用意すれば
よいのでしょうか?
極端に言えばCRITICAL_SECTIONをグローバル変数として定義して、
EnterCriticalSection等を使えばよろしいのでしょうか?

278 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:33:23 ]
トイレに例えるなら何個個室があっても鍵がすべて連動してトイレにはひとりしか入れないってことだぞ
それでいいのか?

279 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:44:28 ]
それでも良いが性能は良くない
性能向上のためにスレッドを使っているわけではないのなら、別に構わない
無理にシングルスレッドで処理するよりマルチスレッドの方が可読性が高くなることもあるからな
性能を上げたいのなら一人がどこかでロックを握ってる間全員が待たされるような構造は良くない

280 名前:277 mailto:sage [2010/02/03(水) 00:18:41 ]
なるほど。問題点の指摘ありがとうございます。
では、3つスレッドがあるとして、1つは無関係で2つのスレッドで
変数を共有する場合は、クリティカルセクションをどう使えば
よろしいのでしょうか?
各スレッドループ中にCRITICAL_SECTIONを定義してりようすればよろしいのでしょうか?
何か根本的に勘違いしている気がしている気がします。

281 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:32:42 ]
共有する変数がグローバルで1個しかないのならクリティカルセクションもグローバルで1個でいいよ

282 名前:277 mailto:sage [2010/02/03(水) 00:50:34 ]
現在は全体からアクセスできる変数が一つです。
一気にやろうとはしないで少しずつ複雑なパターンを試してみます。
あと環境はWindowsです。失礼しました。



283 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 01:35:14 ]
まあロックが1つで済むならデッドロックとか考えなくて済むし
可能ならその方が悩まない。
パフォーマンスの問題は、占有期間次第とも言えるから。

284 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 02:19:04 ]
クリティカルな部分一個をトイレの個室一つと考える

285 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 04:12:03 ]
たまに鍵かけないやつがいてトラブるんだ


286 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 07:23:37 ]
そうするとトイレの中に
トイレがあって、その中にまたトイレがないと
説明不可能だろ。

トイレはネストできねーだろ

287 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 09:11:21 ]
そうかクリティカルセクションはネスト出来たか

288 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 11:33:20 ]
じゃあトイレがバスルームにあるということで

289 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 11:42:57 ]
階層数に制限があるからダメ。

290 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 11:52:56 ]
トイレ中に地震がくるのと
小便中に大便を催すのと
どっちが我慢できる?

291 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 13:45:14 ]
メモリバリアとmutexの関係が解りません。
メモリバリアとmutexがどういうものか。とかじゃなくて、
関係性とか、必要とされる場面について解説してあるサイトないですか?

292 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 13:59:08 ]
メモリバリア
ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%90%E3%83%AA%E3%82%A2

メモリバリアは単に自CPUのメモリアクセスの順序を制御するだけのもので、
mutexのようなスレッド間の排他制御 (後続のスレッドを進入させずに待たせるような) 機能は無い
メモリバリアはCPUの1命令に過ぎず、mutexはOSのスレッド管理と絡むもっと複雑なものだ
mutexを実装するOSの中の人は、複数のCPU間の連携のためにメモリバリアを使うかもしれない



293 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 16:33:38 ]
メモリバリアかアトミック命令が無いとMutexは実装出来ない

294 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 20:55:32 ]
>>291 は同期処理のバリアのことじゃないの?
ja.wikipedia.org/wiki/%E3%83%90%E3%83%AA%E3%82%A2_%28%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6%29

ロードストアのオーダリングの話と mutex はちょっと離れてる気がする

295 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:45:59 ]
>>286
クリティカルセクションのネストって必要かな?

296 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:49:29 ]
クラスのスレッドセーフなメソッドから同クラスのスレッドセーフなメソッドを呼び出す場合とかにあると便利かも

そういう動作を意図しなかった場合にバグらないっていう利点もあるね

297 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:55:39 ]
同クラスなら同期処理しないプライベートメソッドを呼び出すのではないか

298 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 19:04:48 ]
たとえば口座aから口座bに振替をおこなうには、
口座aと口座b両方のロックを取る必要がある、
という典型的な例は?

299 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 08:24:35 ]
それは二つのCSをロックするだけでネストじゃないんでね?

300 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:08:04 ]
こんな話題とメモリバリアの話題が同時進行するってかなりカオスな気がする

301 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 13:10:17 ]
>>298
同時に入ってる必要は無くね?

302 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 21:40:05 ]

両方とも、a→bの流れならトランザクションだけでよくないか?



303 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 00:40:47 ]
スレッドがA、B、C、Dの4つあって
かならずA、B、C、Dの順番で仕事が
終わるようにするには

どんなアルゴリズム使えばいいのですか?

304 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 00:46:46 ]
スレッド化する意味あるのか?
B,C,Dは寝かせておいて、Aが自分の仕事を終えたときにBを起こせばいいんじゃないか

305 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 13:44:25 ]
スレッドの終了処理を順番にやる必要があるってことかな。
終わるタイミングを調整したいだけなら、
BがAの終了を待つ
CがBの終了を待つ
DがCの終了を待つ
って感じにやれば順番に終われるんじゃね?


306 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 18:28:33 ]
そしてAがDの終了を待てば完璧

307 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 19:34:45 ]
>>306
どうやって全部待てばいいの?

308 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:36:58 ]
Eに管理してもらう

309 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 20:51:33 ]
どうやるのか全然わからない

たすけて

310 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 22:14:37 ]
Aの処理終了の際に2個のスレッドで破れるBarrier1を待つ
Bの処理開始の際に2個のスレッドに破れるBarrier1を待つ
Bの処理終了の際に2個のスレッドに破れるBarrier2を待つ
Cの処理開始の際に2個のスレッドに破れるBarrier2を待つ
Cの処理終了の際に2個のスレッドに破れるBarrier3を待つ
Dの処理開始の際に2個のスレッドに破れるBarrier3を待つ

311 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 22:16:11 ]
>>310
>スレッドで破れるBarrier
こんなことすると破綻すると思うのですが
それは何か新しい概念なのでしょうか?

312 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 22:46:53 ]
>>311
>>294のバリアのことだよ。
2個のスレッドがバリアに到達した瞬間にバリアが破れて同時に進行を再開する。

Wikipediaより…
並列コンピューティングにおけるバリア(英: Barrier)とは、同期方法の一つであり、
ソースコード中でスレッドやプロセスがある箇所で停止し、
他の全てのスレッドプロセスがバリアに到達するまで進行しないようなものを示す。



313 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 00:29:35 ]
>>310
わかりにくい表現だな。

314 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 21:28:39 ]
同期なり待機って言った方がわかりやすいな

315 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:13:07 ]
追加削除順序を保持しつつ
効率的にアクセス可能なデータ構造って何があるの?


316 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:25:04 ]
二分木

317 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:32:33 ]
>>316
マルチスレッドの2分木のサンプル
教えて

318 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 00:50:06 ]
>>315
Skip list.
実装例は java.util.concurrent.ConcurrentSkipListSet とかかな。

319 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 11:14:34 ]
C++のマルチスレッドの本って
どんなのがありますか?

Intelの本は使い方しか書いてないで
困ってる

320 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 12:39:32 ]
正直、使い方だけしか提示しようがない気がする
どこもかしこも開拓中で、定番というものが無い

321 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 18:06:11 ]
>>319
Java並行処理プログラミングマジオススメ。
直接同じことは出来なくても、考え方は大いに参考になる。
volatileだけはC++と全くの別物なので注意だけど。

boost.threadのfutureでJavaのExecutorフレームワークに近いことが出来そうだなぁ。

322 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 18:16:04 ]
>>321
その程度の書籍薦められても困るんだよ
もっとまともな本持って来い



323 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 18:29:39 ]
>>322
Java並行処理プログラミングでも満足できない貴方には
↓がお勧め。
scholar.google.com/
最先端の研究成果が大量に手に入るぞ。

324 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 19:01:28 ]
>>322
もっとまともな本があるなら俺も知りたいけどね。

325 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:35:25 ]
並行コンピューティング技法――実践マルチコア/マルチスレッドプログラミング
ttp://www.oreilly.co.jp/books/9784873114354/

326 名前:デフォルトの名無しさん [2010/02/22(月) 16:37:56 ]
begintreadexを使ったときはclosehandleを使わないといけないらしいけど
CloseHandle((HANDLE)_beginthreadex());
こんな感じでいいの?

327 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 16:42:48 ]
beginthreadexが返したハンドルを渡すのかと聞いているのならYES

328 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:44:29 ]
_beginthreadexはなんで整数型で返すんだろう

329 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:11:07 ]
Win32の型を持ち込みたくなかったからじゃないの。

330 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 00:27:00 ]
意味も無く汚くはしないしな、いくらMSでも

331 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 00:29:08 ]
void *じゃだめなのか

332 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 08:52:12 ]
それだと32bitであることを強調できないからやめたんじゃないかな



333 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 14:32:40 ]
一応今はuintptr_tだしな
まぁ毎度のレガシーの枷なんだろうし、仕方ないっつーか正直どうでもいい

334 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 15:36:02 ]
どちらかというとマルチコア絡みの質問ですが
テンプレにある該当スレは過疎ってるぽいのでこちらで質問させていただきます

Q1. Windowsはスレッドコンテキスト切替時、汎用レジスタ同様にxmmレジスタを待避/復帰しますか?
   主にWindows 7 (32 bit)とWindows 7(64 bit)について知りたいですが、他のも回答いただけると有難いです

Q2. そもそもCore i7のSIMDモジュールってコア毎に独立してますか?
   独立してるっぽいけど、確証となるブロックダイアグラムみたいなのがIntelのドキュメントを漁っても見つからないorz

Q3. Core i7の分岐予測メモリって、コードが共通なら全スレッドで共通?それともスレッドコンテキスト毎にきちんと別統計になるんでしょうか?

Q4. VC(2008)付属ライブラリの数学関数(おそらくコプロセッサを使うはず)はスレッドセーフですか?またそれは/fp:オプションによらず不変?

よろすくおながいしますorz


335 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 16:24:51 ]
A1: Windows 98, 2000以降はyes
A4: yes

336 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 16:51:28 ]
A2 コア別でしょう。たぶん。コア間共有なんて設計のほうが難しいと思うよ。
A3 コア別でしょう。たぶん。コア間共有なんて設計のほうが難しいと思うよ。


337 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 17:32:40 ]
>>326
>CloseHandle((HANDLE)_beginthreadex());
その組み合わせはちょっちまずくね?
ttp://msdn.microsoft.com/ja-jp/library/cc429080.aspx
にメモリリークが起きると書いてある(ちなみにやねうら本(1)にもそう書いてある)
ExitThread()を明示的に呼ばなくても、スレッド関数を抜けたら同じことのはず

なお、>326の反対(CreateThread()が返したハンドルを _endthread()で開放する)は明白に危険であろうことが上のリンク先から推測できる
(確保されていないメモリを_endthread()が解放しようとするハズ)


338 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:07:36 ]
何のために_beginthread()〜_endthread()や_beginthreadex()〜_endthreadex()があるかというと
strtol()みたいに、機能的にはマルチスレッド環境下でも動いて欲しいのだが関数仕様的にマルチスレッドと相容れないような
標準関数をマルチスレッド環境でもきちんと動くようにする目的なので(おそらくそのために内部的にスレッド局所記憶を確保している)
そういう類の関数を明示的にも暗黙的にも呼び出さないと誓うならCreateThread()〜CloseHandle()で無問題

339 名前:308 mailto:sage [2010/03/07(日) 18:19:56 ]
スマソstortol()じゃなくて問題なのはstrtok()とかlocaltime()とかだった、


340 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 18:53:55 ]
>>337
_beginthread は起動されたスレッドが終了時にハンドルのクローズを行う。
_beginthreadex は別途CloseHandleする必要がある。その代わり、
スレッドが終了していてもハンドルは有効であり、スレッドの状態を調べることができる。
ここでのリークというのはCRTの作業域のことではなくて
あくまでもスレッドを追跡するためのハンドルのこと。


341 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:27:39 ]
>335, >336
レスdクス
A1は実験的にも確認できた(イントリンシック関数が排他を含まないこと、およびxmm0とxmm1を使う関数を64スレッドで呼び出して無問題)
A2はまあそう思う(ダイ写真でSIMDとコアの区別を確認できない&SIMDの数<コアの数ではマルチメディア目的に合致しない)
A4についても使用予定関数について実験的に確認できた

A3はちょっち謎
同一コードで記述され、同一コアで走る別スレッド(含HT)の場合どうなるのか?
同一コード条件とそうでない条件(コードをスレッド別コピーとする)とで速度比較すればいいんだろうけども
コードをコピーすると分岐予測以前にトレースキャッシュ容量他の要因で速度低下するかもしれないから実験では精度良くは判断できない鴨


342 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 00:36:48 ]
pthread_cond_wait状態になるまでに
結構時間かかるのですかね?

以下のようなコードを実効すると
結構頻繁に、別のスレッドがwait状態になる前に
pthread_cond_signalを実効してしまうのですが
必ず、同期取るようにどうしたらいいのでしょうか

thread1
{
while(1){
pthread_mutex_lock(&m);
pthread_cond_wait(&c, &m);
pthread_mutex_unlock(&m);
}

}

main
{
while(1) {
pthread_mutex_lock(&m);
pthread_cond_signal(&c, &m);
pthread_mutex_unlock(&m);
}
}




343 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 00:39:08 ]
どうやって確認したの?

344 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 00:45:01 ]
何がしたいのかよくわからんが、
とりあえずmutex取得する前にシグナル発行してたらいかんだろう。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef