簡體   English   中英

C#中的線程和靜態方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM