Потоки и статические методы в 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", созданной и назначенной вторым, что означает, что этот метод является повторным входом?

3 ответа

Решение

Да, каждый поток получает свою собственную локальную переменную. Эта функция всегда будет возвращать 2, даже если она вызывается несколькими потоками одновременно.

Да, это правильная оценка. x является локальной переменной метода, и не будет разделяться между вызовами MyExtensionMethod,

Проще говоря, да. Статический метод только означает, что метод может быть вызван без объекта. Локальные переменные в методе все еще являются локальными.

Другие вопросы по тегам