2010-02-16 2 views
2

Говорят, что у меня естьЯвляется ли этот код поточно или почему я отношусь с Url.Helper

public static class M 
{ 
    public static string Concat(string a, string b) 
    { 
     return N.AddOne(a, b); 
    } 
    public static string Concat2(string a, string b) 
    { 
     return SomeThreadSafeMethod(a, b); 
    } 
} 

public static class N 
{ 
public static string AddOne(string a, string b) 
    { 
     return a+b+1; 
    } 
} 

ли M.Concat операция поточно? Как насчет M.Concat2? Возможно ли, что SomeThreadSafeMethod получит вызов с другим a или b в многопоточном контексте?

Причина, по которой я задаю этот вопрос, заключается в том, чтобы лучше понять, как C# справляется с резьбой, особенно для корпуса M.Concat2.

Во-вторых, я работаю с ASP.Net MVC, и я озабоченность тем, что, когда я называю Html.ActionLink или RouteLink с маршрутом с переменной что-то простое, такие как

Html.ActionLink("Test", "Index", "Test", new { Model.Id, Model.State}) 

Когда несколько пользователей поражая ту же страницу , каждый из них получит другое государство. Если это не потокобезопасность, я могу вернуться к другому маршруту, чем предполагалось.

ответ

2

Метод Concat абсолютно потокобезопасен, потому что он не устанавливает никаких переменных. Concat2 также потокобезопасен из-за того, как вы его вызываете. Вы только передаете Model свойства, и каждый раз вы получаете экземпляр другой модели. Единственная проблема может быть в методе SomeThreadSafeMethod, если он устанавливает статические переменные без блокировки.

 Смежные вопросы

  • Нет связанных вопросов^_^