YesとNo
std::thread
用:
_Thrd_start
(cthread.c
ファイル)を呼び出し
std::thread
コンストラクタは(thread
ファイル)
_Launch
(xthread
ファイル)を呼び出し
_Thrd_startX
(xthread
ファイル)を呼び出します
_beginthreadex
(cthread.c
ファイル)を呼び出します。
私は_beginthreadex
コードを持っていませんが、ファイルatlbase.h
に、いくつかのマイクロソフト開発者は、次のコメントを残した:
// _beginthreadex calls CreateThread which will set the last error
// value before it returns.
はそう何PPLはinvoledません。
ただし、std::async
はscensの背後にあるconcurrency::create_task
を呼び出し、Windows APIベースのスレッドプールを使用します。
私の質問の背景は、いくつかのタスクにstd::thread
を使用することは理にかなっていますか?
私はPPLを使用するカサブランカを使用しました。私もスタンドアロンとしてPPLで遊んだ。
私はそれをすべて賢明には好きではありません。私自身のスレッドプール+ std::future
+ std::promise
は、文字通り、concurrency::task
オブジェクトよりも速く驚異的な時間でした。実際には、C#バージョンTPL
との比較では不十分です。私はperformaceがそのプロジェクトのために重要でない場合にのみそれを使用します。
これはPPLと同じ基盤を使用します。これは同時実行性ランタイムです。これはOSのプリミティブを(ほぼ)完全に置き換えたもので、多くのコアCPUでスケーラビリティを向上させることに重点を置いていました。そして、私はそれがいつか移植されるという若干のアイドルな希望を疑う。 btwをデバッグすることは大きな喜びではありません。 std :: threadはむしろ裸のクラスなので、PPLを使って追加します。スレッドプールのように、parallel_forなど。 –