API ガイド > マルチスレッド化プラグイン >

# スレッド

ここでは、スレッド化に関する最小限必要なコンセプトを説明します。ここで説明するコンセプトを理解しておくことは、スレッド化コードを扱う開発者にとって不可欠です。

スレッドとは

スレッドは、オペレーティング システムによって作成、管理される新しい実行領域で、スレッド専用の以下のリソースが格納されています。

- 新しいスタック
- プロセッサ レジスタのコピー
- 最初に実行する命令の命令ポインタ

以下のリソースはスレッドでは複製されず、すべてのスレッドに対してグローバルに表示されます。

- コード
- スレッドの開始より前に作成されたデータ

OS 固有のスレッド化ライブラリ

これは最低レベルのスレッド化実装であり、ユーザがオペレーティング システム上で使用できます。Maya では以下のスレッド化ライブラリを使用します。

- Windows: Win32 thread
- Linux: pthread
- Mac OS X: pthread

スレッド管理

スレッドの作成は比較的リソースを消費する処理であるため、一般的には、アプリケーションの開始時にスレッドを実行中のままにし、スレッド プールでスリープ状態にしておくと便利です。スレッドをアクティブにして実行しスリープ状態でプールに戻すことで、必要に応じて新規スレッドを頻繁に作成するよりもオーバーヘッドを大幅に抑えることができます。

スレッドのプロパティ

個々のスレッドには、ユーザが制御できるプロパティがあります。たとえば、スレッドの優先順位は、OS によるスレッドのスケジュール設定を決定します。優先順位が高いスレッドには、OS スケジューラによって優先権が与えられます。

スレッドのアフィニティは、スレッドを実行する物理プロセッサを定義します。スレッドをコアにバインドすると、動作の決定性が高くなるため、便利な場合もあります。ただし、OS のプロバイダは通常、ユーザではなく OS によるプロセッサのアフィニティ管理を推奨しています。