トップページ > 過去ログ > 記事閲覧
マルチスレッドは全く使えないのでしょうか?
名前:CYARACON 日時: 2012/10/04 00:56

MMDキャラクター同士を戦わせるシューティングゲームを制作中です。 処理の高速化のためいろいろ工夫をしたつもりなのですが、アイデアも出尽くしてしまい、それでも処理速度が足りません。 いよいよマルチスレッドにしなければならない雰囲気なのですが、DXライブラリィはマルチスレッドには対応していないと聞いています。 そこで質問なのですいが、マルチスレッドは、全く使用できないのでしょうか? たとえばグラフィック系は同一スレッドにまとめ、MMDキャラの物理演算だけ別スレッドで実行、という方法はできないでしょうか?

Page: 1 |

Re: マルチスレッドは全く使えないのでしょうか? ( No.1 )
名前:Will 日時:2012/10/04 09:11

できますよ。 DXライブラリの関数をコールするスレッドが同一であれば問題無いです。 老婆心で一言忠告しておきますと、マルチスレッドにするが必ずしも高速化にはつながりません。 例えばAという計算が終わらないとBという処理ができないような場合、AとBをマルチスレッドで切り分けても 結果は何も変わりません。 まず、現状のボトルネックが何であるのかを把握し、どの部分が並列処理可能であるのかを見極める必要があります。 スレッドの分割が不適切だと、排他制御でデッドロックしたり、スレッド間の同期をとるために 余計に遅くなってしまう可能性もあるということを理解しておいてください。
Re: マルチスレッドは全く使えないのでしょうか? ( No.2 )
名前:CYARACON 日時:2012/10/04 21:57

> Will さん レスありがとうございます >DXライブラリの関数をコールするスレッドが同一であれば問題無いです。 ということは、描画関数を呼ぶスレッドと、物理演算計算関数を呼ぶスレッドは同じにしないとだめ、ということでしょうか。 やはりそうなりますのですね。 うーん、もうすこしいろいろ研究しています。 >まず、現状のボトルネックが何であるのかを把握し(以下略) はい、そのへんはいろいろ勉強しながら試して見ます。 ありがとうございます。
Re: マルチスレッドは全く使えないのでしょうか? ( No.3 )
名前:ぴかちゆう 日時:2012/10/05 22:40

横からすみません マルチスレッドをやってみたいのですが 具体的に、どのようにすればできるのか 教えていただけますか
Re: マルチスレッドは全く使えないのでしょうか? ( No.4 )
名前:いっち 日時:2012/10/06 10:28

ぴかちゆうさん> CreateThread や _beginthreadex などで検索をかけるとご希望の情報が得られると思います。
Re: マルチスレッドは全く使えないのでしょうか? ( No.5 )
名前:CYARACON 日時:2012/10/07 00:36

>ぴかちゆう さん 既に、いっちさんが解答されてますが、まずはこのあたりから読んでみては。 「第99章 マルチスレッド」で検索するとでてくるページで、基本的な解説をしておるいようです。 (このbbsではurlが貼れないので検索してください。 Will さんが指摘されているように、デッドロックやいろいろ工夫すべきことがあって、 プログラム制作としては楽しめるかと思います。
Re: マルチスレッドは全く使えないのでしょうか? ( No.6 )
名前:ぴかちゆう 日時:2012/10/14 21:04

運動会のため返事おくれてすみません 丁寧に教えていただきありがとうございました

Page: 1 |