タイトルに書いたように、私はC++スタンダードスレッドがユーザー空間かカーネル空間で管理されているかどうかを知りたいと思います。std :: threadsはユーザ空間またはカーネル空間で管理されますか?
ありがとうございます。
タイトルに書いたように、私はC++スタンダードスレッドがユーザー空間かカーネル空間で管理されているかどうかを知りたいと思います。std :: threadsはユーザ空間またはカーネル空間で管理されますか?
ありがとうございます。
ほとんどの場合、標準では特定の実装が必須ではなく、出現した動作がその規則に準拠している必要があります。
したがって、特定の実装は自由に選択できます。一方、おそらく多くの実装はboost.thread(std::thread
の提案に基づいています)に基づいているので、考えてみることができます。
このライブラリは、Win32のPOSIXおよびWindowsスレッドでpthreadsを使用します。 Win32スレッドは確かにカーネルスレッドですが、pthreads は自分自身でです。もう1つはインターフェイスです。これはユーザー空間とカーネル空間の両方で実装できます(ほとんどの最近のUNIXカーネルでは、 。
So:std::thread
は「主流の」PCオペレーティングシステム/実装では何でも構いませんが、カーネルスレッドを取得する可能性が非常に高いです。なんらかの理由でもっと知る必要がある場合は、コンパイラのドキュメントを参照してください。
IIRCでは、Dinkumwareのスレッド実装はクリーンルームの実装であり、Boostの派生ではなく、カーネルスレッディングも使用しています。 – MSalters
インターフェイスはdesigned around pthreadsですが、使用するものを決定するのはlibC++の実装者の責任です。
@ジェリー:編集済み。 –
+1 - 少なくとも私にははるかに正確に見えます。 –
どのプラットフォームですか?標準に関しては、両方のオプションが同じように有効です。 – Fanael
標準では指定されていませんが、カーネルスレッドがどの程度優勢になっているかを考えると、ほとんどの実装でカーネルスレッドを使用する可能性が高いと推測するのは安全です。 –
C++には「カーネル」というものはありません。あなたの質問は、言語としてのC++には当てはまりません。 –