C# 静态方法线程安全
假设当用户登录到我的mvc应用程序时,我调用以下方法:C# 静态方法线程安全,c#,.net,asp.net-mvc,static,thread-safety,C#,.net,Asp.net Mvc,Static,Thread Safety,假设当用户登录到我的mvc应用程序时,我调用以下方法: public static bool IsValidBrowser() { var browser = HttpContext.Current.Request.Browser; if (browser.Browser == "IE") { if (browser.MajorVersion < 10) { return false; } } ret
public static bool IsValidBrowser()
{
var browser = HttpContext.Current.Request.Browser;
if (browser.Browser == "IE") {
if (browser.MajorVersion < 10) {
return false;
}
}
return true;
}
HttpContext.Current本身是一个静态方法,它将从当前线程返回上下文,因此您无需担心。HttpContext.Current本身是一个静态方法,它将从当前线程返回上下文,因此您无需担心 这个方法是线程安全的吗
public ActionResult Login ()
{
bool validBrowser = IsValidBrowser(HttpContext.Current.Request.Browser);
}
public static bool IsValidBrowser(HttpBrowserCapabilities browser)
{
if (browser.Browser == "IE") {
if (browser.MajorVersion < 10) {
return false;
}
}
return true;
}
是的,正如@DoctorMick已经解释的那样,此方法是线程安全的。再补充一点
微软的
框架类库(FCL)保证所有静态方法都是线程安全的。
FCL必须这样做
内部原因是生产不同组件的多家公司无法
协调单个锁以仲裁对资源的访问
所以,如果您使用FCL静态方法,就不需要考虑线程安全性。例如(控制台类、数学类等)
这个方法是线程安全的吗
public ActionResult Login ()
{
bool validBrowser = IsValidBrowser(HttpContext.Current.Request.Browser);
}
public static bool IsValidBrowser(HttpBrowserCapabilities browser)
{
if (browser.Browser == "IE") {
if (browser.MajorVersion < 10) {
return false;
}
}
return true;
}
是的,正如@DoctorMick已经解释的那样,此方法是线程安全的。再补充一点
微软的
框架类库(FCL)保证所有静态方法都是线程安全的。
FCL必须这样做
内部原因是生产不同组件的多家公司无法
协调单个锁以仲裁对资源的访问
所以,如果您使用FCL静态方法,就不需要考虑线程安全性。例如(控制台类、数学类等)