3

これらを念頭に置いて

-HttpContext.Current _

-Foreach _

これに頭を巻くのに問題があります...このコードはASP.NETで「スレッドセーフ」ですか?

public static bool IsCookieMissing()
{
    foreach (string cookieKey in HttpContext.Current.Request.Cookies.AllKeys)
    {
        if (cookieKey.EndsWith("cookie_name"))
        {
            return false;
        }
    }
    return true;
}
4

2 に答える 2

4

技術的には、はい、このコードはスレッドセーフです。

HttpContext.Currentは、現在の要求に関連付けられているコンテキストを返します。IISは、特定の要求を処理するために複数のスレッドを使用する場合がありますが(スレッドの俊敏性)、これらのスレッドを並列に実行しません(非同期I / O中にのみスレッドを切り替えます)。

HttpContext.Current.Request.Cookiesしたがって、同時にアクセスできるスレッドは1つだけであり、ここでロックする必要はありません。

于 2012-06-25T14:46:03.087 に答える
2

このコードはASP.NETで「スレッドセーフ」ですか?

それはあなたがそれが何をすることを期待するかに依存します。それはおそらくあなたが期待することをするので、それを呼び出しているあなた自身のスレッドを始めていない限り、それは「スレッドセーフ」です。HttpContext.Current呼び出されたときの現在のHttpContextです。リンクしたこの質問の問題についての懸念は必要ありません。クロージャーを使用していません。

于 2012-06-25T14:44:12.567 に答える