C#中的线程和静态方法

Ben*_*Ben 12 c# multithreading static-methods reentrancy

以下是一个无意义的扩展方法示例:

public static class MyExtensions
{
    public static int MyExtensionMethod(this MyType e)
    {
        int x = 1;
        x = 2;

        return x
    }
}
Run Code Online (Sandbox Code Playgroud)

假设执行线程完成并包括该行:

x = 2; 
Run Code Online (Sandbox Code Playgroud)

处理器然后上下文切换,另一个线程进入相同的方法并完成该行:

int x = 1;
Run Code Online (Sandbox Code Playgroud)

假设第一个线程创建并分配的变量"x"在一个单独的堆栈上由第二个创建并分配的变量"x",我是否正确,这意味着该方法是可重入的?

Mar*_*ers 14

是的,每个线程都有自己独立的局部变量.即使多个线程同时调用,此函数也将始终返回2.