11

タイトルにも書きましたが、C++の標準スレッドがユーザー空間で管理されているのかカーネル空間で管理されているのか知りたいです。

ありがとうございました。

4

2 に答える 2

15

ほとんどの場合に起こるように、標準は特定の実装を義務付けておらず、表示された動作がそのルールに準拠していることを要求するだけです。

したがって、特定の実装は自由に選択できます。一方、おそらく多くの実装は(std::thread提案の基になっている)boost.threadに基づいているので、それを見てアイデアを得ることができます。

このライブラリは、POSIXではpthreadを使用し、Win32ではWindowsスレッドを使用します。Win32スレッドは間違いなくカーネルスレッドですが、pthread自体はさらに別のインターフェイスであり、ユーザースペースとカーネルスペースの両方に実装できます(ただし、最近のほとんどのUNIXカーネルにはカーネルスペースに実装する機能があります)。

つまりstd::thread、「主流」のPCオペレーティングシステム/実装では、カーネルスレッドを取得する可能性が非常に高いですが、何でもかまいません。何らかの理由で詳細を知る必要がある場合は、コンパイラのドキュメントを確認してください。

于 2012-04-30T16:11:30.827 に答える
4

インターフェイスはpthreadsを中心に設計されていますが、何を使用するかを決定するのは libc++ の実装者次第です。

于 2012-04-30T16:14:39.230 に答える