c++11マルチスレッドモデルについてもっと知りたいです。ぐるぐる回ると、例やデモンストレーションなどがたくさん見つかりますが、何かがわかりません。
大学のOSレッスンでスレッドの概念について研究しました。もちろん、それは特定の実装や言語に関するものではありませんでした。次の一節は、Abraham Silberschatz、Greg Gagne、およびPeter Baer Galvin、「Operating System Concepts、第8版」、第4章からのものです。
4.2マルチスレッドモデル
最新のシステムで管理されるスレッドには、ユーザースレッドとカーネルスレッドの2種類があります。ユーザースレッドは、カーネルのサポートなしで、カーネルの上でサポートされます。これらは、アプリケーションプログラマーがプログラムに入れるスレッドです。
カーネルスレッドは、OS自体のカーネル内でサポートされています。最新のOSはすべてカーネルレベルのスレッドをサポートしているため、カーネルは
- 複数の同時タスクを実行する、および/または複数のカーネルにサービスを提供する
- システムコールが同時に行われます。
特定の実装では、次のいずれかの戦略を使用して、ユーザースレッドをカーネルスレッドにマップする必要があります。
4.2.1多対1モデル
4.2.21対1モデル
4.2.3多対多モデル
では、c ++ 11でサポートされているモデルはどれですか?AFAIKc++
は、特定の種類のOSで使用されることは想定されていません。したがって、標準ライブラリはユーザースペーススレッドのみをサポートする必要がありますよね?