ThreadStatic
のようなものは、どのようにTPLタスクで使用できますか?私の理解(「C#でのWrox Professional並列プログラミング」、p74)は、タスクが実行中にあるスレッドから別のスレッドに切り替えることができるということです。ThreadStatic for TPLタスク
私は何をしたいですか?
静的クラス内にセッションIDを保持したいので、このIDをすべてのメソッドに渡す必要はありません。私の図書館には、login(id)
、logout(id)
などのメソッドと、このIDに関連付けられた資格情報で動作するメソッドがあります。しかし、私はすべての方法にこのidを渡したくない。私は、私のライブラリが別のセッションで別のスレッド内で呼び出されるようにすることができます。したがって、login()
のIDをThreadStatic
変数に保存すると動作します。
今私はThreadPool
によって私のために作成されたTPLタスクを使用したいと思います。セッションIDをタスクに渡すことはできますが、このIDをThreadStatic
変数に格納すると、タスクがスレッドを切り替えると生き残りません。
私は実際*タスクの聞いたことがない*実行中に別のスレッドからの切り替え。あなたはそのことについてどこで聞いたのですか? –
ワーカースレッド間のタスク切り替えを示すブック "Wrox Professional Parallel Programming with C#"の74ページにある図があります。 – Gerard
@Gerard:あるスレッドで*キューに入っているタスクではなく、*を実行している間に*実行中であることを確認してから、別のスレッドに切り替えて実行することを意味しますか? –