タイトルにも書きましたが、C++の標準スレッドがユーザー空間で管理されているのかカーネル空間で管理されているのか知りたいです。
ありがとうございました。
タイトルにも書きましたが、C++の標準スレッドがユーザー空間で管理されているのかカーネル空間で管理されているのか知りたいです。
ありがとうございました。
ほとんどの場合に起こるように、標準は特定の実装を義務付けておらず、表示された動作がそのルールに準拠していることを要求するだけです。
したがって、特定の実装は自由に選択できます。一方、おそらく多くの実装は(std::thread
提案の基になっている)boost.threadに基づいているので、それを見てアイデアを得ることができます。
このライブラリは、POSIXではpthreadを使用し、Win32ではWindowsスレッドを使用します。Win32スレッドは間違いなくカーネルスレッドですが、pthread自体はさらに別のインターフェイスであり、ユーザースペースとカーネルスペースの両方に実装できます(ただし、最近のほとんどのUNIXカーネルにはカーネルスペースに実装する機能があります)。
つまりstd::thread
、「主流」のPCオペレーティングシステム/実装では、カーネルスレッドを取得する可能性が非常に高いですが、何でもかまいません。何らかの理由で詳細を知る必要がある場合は、コンパイラのドキュメントを確認してください。
インターフェイスはpthreadsを中心に設計されていますが、何を使用するかを決定するのは libc++ の実装者次第です。