次の方法で共有


マルチタスクに関する考慮事項

推奨されるガイドラインは、可能な限り少数のスレッドを使用して、システム リソースの使用を最小限に抑えることです。 これにより、パフォーマンスが向上します。 マルチタスクにはリソース要件があり、アプリケーションの設計時に考慮すべき競合の可能性があります。 リソースの要件は次のとおりです。

  • システムは、プロセスとスレッドの両方で必要なコンテキスト情報のメモリを消費します。 そのため、作成できるプロセスとスレッドの数は、使用可能なメモリによって制限されます。
  • 多数のスレッドを追跡すると、プロセッサ時間が大幅に消費されます。 スレッドが多すぎると、ほとんどのスレッドが大きな進歩を遂げることができません。 現在のスレッドのほとんどが 1 つのプロセス内にある場合、他のプロセスのスレッドのスケジュールの頻度は低くなります。

リソースへの共有アクセスを提供すると、競合が発生する可能性があります。 これらを回避するには、共有リソースへのアクセスを同期する必要があります。 これは、システム リソース (通信ポートなど)、複数のプロセスによって共有されるリソース (ファイル ハンドルなど)、または複数のスレッドによってアクセスされる 1 つのプロセス (グローバル変数など) のリソースに当てはまります。 (同じプロセスまたは異なるプロセス内で) アクセスを適切に同期できないと、デッドロックや競合状態などの問題が発生する可能性があります。 複数のスレッド間のリソース共有を調整するために使用できる同期オブジェクトと関数。 同期の詳細については、「複数スレッドの実行の同期」を参照してください。 スレッドの数を減らすと、リソースの同期がより簡単かつ効果的になります。

マルチスレッド アプリケーションの優れた設計は、パイプライン サーバーです。 この設計では、プロセッサごとに 1 つのスレッドを作成し、アプリケーションがコンテキスト情報を保持する要求のキューを作成します。 スレッドは、次のキューで要求を処理する前に、キュー内のすべての要求を処理します。