シングルスレッドからマルチスレッドへの変換は、メリットだけではありません。それには値段もかかります。できるからといって、アプリケーションでマルチスレッドを使用しないでください。これを行うことで何が得られるのか、そしてそのメリットがコストを上回るのかをよく理解しておく必要があります。疑問がある場合は、ただ推測するのではなく、アプリケーションのパフォーマンスや応答性を測定するテストを試みてください。
より複雑な設計
マルチスレッドの一部の部分はシングルスレッドよりも単純ですが、他の部分はより複雑です。複数のスレッドから実行されるコードを通じて共有データにアクセスするには、特別な注意が必要です。スレッドの対話は原則として常に単純です。間違ったスレッド同期によって発生するエラーは、検出、発生、修正することが困難です。
コンテキスト切り替えのオーバーヘッド
CPU があるスレッドから別のスレッドに切り替えるとき、CPU は現在のスレッドのローカル データ、プログラム ポインター、その他の情報を保存し、次のスレッドのローカル データをロードする必要があります。実行するプログラムのポインター。このスイッチを「コンテキストスイッチ」と呼びます。 CPU は、1 つのスレッドを実行するコンテキストから別のスレッドを実行するコンテキストに切り替えます。
コンテキストスイッチングは安くはありません。スレッド間の切り替えを必要以上に長くしたくありません。
リソース消費量の増加
スレッドを実行するには、コンピューターのリソースが必要です。さらに、CPU のスレッドはローカル スタックを維持するためにある程度のメモリを必要とします。一部のリソースは、オペレーティング システム管理スレッド内で占有される場合もあります。待機のみを行う 100 スレッドのプログラムを作成して、実行時にどれだけのメモリを消費するかを確認してください。
上記は Java マルチスレッド コストの内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) をご覧ください。