UnityUnityを使ってマルチスレッドプログラミングの概要と、そのメリット・デメリットを簡単にまとめてみます。関連Unity2018.3.9マルチスレッドプログラミングとは?まずマルチスレッドでないプログラムでは、1つのCPUコアで処理を先頭から順番に行っていきます。CPUコアを一つしか持たないシングルコアのCPUではもちろん、マルチコアのCPUにであっても一つのCPUだけを使って処理を行います。ここでマルチスレッドのプログラムを書くと、マルチコアCPUではスレッド毎に別のCPUコアで別の処理を行います。シングルコアのCPUでは、一つのCPUコアで処理を行うものの、各スレッドを高速で切り替えながら少しずつ処理するため、擬似的な並列処理が実現されます。処理時間が短縮されるマルチスレッドで処理を行うメリットの1つとして、マルチコアCPUで処理時間が短縮されることが挙げられます。下図から明らかですが、マルチコアCPUでは使っていないCPUコアに処理を回せるので、全体としての処理時間は削減されます。シングルコアCPUではスレッドを切り替える処理の分だけ時間がかかるので、全体としての処理時間は逆に長くなります。画面のフリーズを防ぐマルチスレッドには画面のフリーズを防ぐ効果もあります。計算が完了するまで他の処理ができなくなるため画面がフリーズしてしまいます。ここでこの計算処理を別スレッドに逃がすと、メインスレッドはその間に他の処理を行えるようになります。画面がフリーズしなくなります。マルチスレッドで処理してみるそれでは実際にマルチスレッドで処理を行い効果を見てみます。測定結果は手元のPC(6個のコア、12個のロジカルプロセッサ)によるものです。検証のため直列で処理を行うメソッドと並列で処理を行うメソッドを用意し、それぞれの時間を測ります。0.083並列の処理のほうが圧倒的に早いことがわかりました。効果があるのはあくまでCPUの処理マルチスレッドプログラミングを行う際には、マルチスレッドが効果的に作用するのはあくまでCPUの処理であるということに気を付けなければならないようです。ファイルIOはディスクが処理するので、並列化の恩恵はそこまで受けられないのではないかと思います。これを検証してみます。前節と比べると明らかな優位性は認められませんでした。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。インストールから基本的な使い方・注意点まとめ【Unity】【エディタ拡張】テクスチャを指定したUV座標で切り取って保存する【Unity】指定したアセットのAssetBundle名を取得する【Unity】【シェーダ】スクリプトからVP行列を渡してシェーダで座標変換に使う【Unity】【シェーダ】FloatやVectorをリニアライズ対象にするGammaアトリビュート月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。