Re[5]: Доступ к локальной переменной из разных потоков
От: karbofos42 Россия  
Дата: 13.11.20 08:56
Оценка: 12 (1) +1
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, karbofos42, Вы писали:


S>>>Локальная не может быть volatile.

K>>Осталось разобраться как она так шарится между потоками

S>И как? В чем может быть проблема?


Я для кого про sharplab писал?
Я вот даже не поленился и скопировал пример, получился такой код:
internal class Program
{
    [CompilerGenerated]
    private sealed class <>c__DisplayClass0_0
    {
        public bool b;

        internal void <Main>b__0()
        {
            Thread.Sleep(5000);
            b = false;
        }
    }

    private static void Main(string[] args)
    {
        <>c__DisplayClass0_0 <>c__DisplayClass0_ = new <>c__DisplayClass0_0();
        <>c__DisplayClass0_.b = true;
        Thread thread = new Thread(new ThreadStart(<>c__DisplayClass0_.<Main>b__0));
        thread.IsBackground = true;
        thread.Start();
        while (<>c__DisplayClass0_.b)
        {
            Console.WriteLine("b=" + <>c__DisplayClass0_.b);
            Thread.Sleep(1000);
        }
        Console.WriteLine("b=" + <>c__DisplayClass0_.b);
    }
}


Вопросы про "локальную" переменную и как она в лямбду попадает остались?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.