私はThreadScheduler
とタスクについての記事を読んで学び、MSDN examplesのうちの1つで使用されている関数ThreadPool.UnsafeQueueUserWorkItem
を見つけました。 MSDN description about UnsafeQueueUserWorkItemには、セキュリティホールがあり、 "は呼び出し元のスタックを伝達しません"という大きな警告があります。 "UnsafeQueueUserWorkItemと、正確に「呼び出しスタックを伝播しない」とはどういう意味ですか?
唯一のリンクはQueueUserWorkItem
です - 名前から - 安全な対応者と思われますか?スタックの呼び出しについては何も言及していません。
スタックを伝播するのはどういう意味ですか?仕事が始まる前にそれをコピーしますか?とにかく別のスレッドが呼び出しスレッドのスタックを必要とするのはなぜですか?私は彼らが新鮮で空のスタックから始まると仮定します。結局のところ、スレッド関数が返ってくると、それはタスクをスケジューリングする関数を実行し続けるのではありませんか?
ああ、そうです。とても興味深い。今は...セキュリティ環境の下で実行されていないときに、パフォーマンスの違いはありますか? – Imi
それは動作しません、CASチェックは常に実行されます。スタックウォークには、スタックの深さに依存する固定コストがあります。 「コスト」は大きな言葉ですが、ここではマイクロ秒単位の話をしています。毎秒*千のTPスレッド要求を実行するまで、これはまったく問題にはなりません。 –
_マイクロソフトのほんの一言を語っています。私はここで私のカスタムスレッドスケジューラプロトタイプをプロファイルしてください。私は間違いなく "マイクロ秒"の範囲のもので生きてはいけません。 – Imi