[英]Threading and static methods in C#
以下是一個無意義的擴展方法示例:
public static class MyExtensions
{
public static int MyExtensionMethod(this MyType e)
{
int x = 1;
x = 2;
return x
}
}
假設執行線程完成並包括該行:
x = 2;
處理器然后上下文切換,另一個線程進入相同的方法並完成該行:
int x = 1;
假設第一個線程創建並分配的變量“x”在一個單獨的堆棧上由第二個創建並分配的變量“x”,我是否正確,這意味着該方法是可重入的?
是的,每個線程都有自己獨立的局部變量。 即使多個線程同時調用,此函數也將始終返回2。
是的,這是一個正確的評估。 x
是方法局部變量,不會在MyExtensionMethod
調用之間共享。
很簡單,是的。 靜態方法僅意味着可以在沒有對象的情況下調用該方法。 方法中的局部變量仍然是本地的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.