シングルスレッド計算システムでは、1 度に 1 つの命令が入り、1 度に 1 つの結果が出ます。プログラムをロードして完了するまでの時間は、CPU に課された作業量によります。
マルチスレッドは、CPU が複数のコアにわたる多くのスレッドを同時に処理できる能力を利用したプログラミングの一種です。タスクや命令を 1 つずつ実行する代わりに、いっぺんに実行されます。
プログラムの開始時に 1 つのスレッドがデフォルトで実行されます。これが「メインスレッド」です。メインスレッドは新しいスレッドを作成してタスクを処理します。これらの新しいスレッドは互いに並行して実行され、通常、完了するとその結果をメインスレッドと同期します。
マルチスレッドに対するこのアプローチは、長期間実行されるタスクが 2–3 個ある場合にうまく機能します。しかし、ゲーム開発コードには通常、同時に実行するための小さな命令が多く含まれています。スレッドごとにスレッドを作成すると、生存期間が短い、多くのスレッドで一杯になります。これによって、CPU とオペレーティングシステムの処理能力の限界を超えてしまいます。
スレッドプール (英語) を持つことで、スレッドの生存期間の問題を緩和することが可能です。ただし、スレッドプールを使用する場合でも、同時に多数のスレッドがアクティブになる傾向があります。CPU コアより多くのスレッドを持つと CPU リソースに対しスレッドが互いに競合し、その結果、頻繁な コンテキストの切り替え が発生します。コンテキストの切り替えは、スレッドの状態を実行を通して部分的に保存し、別のスレッドで作業し、後に最初のスレッドを再構築して処理を継続するプロセスです。コンテキストの切り替えはリソースに高い負荷をかけます。そのため、可能な限り、コンテキストの切り替えを避ける必要があります。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.