在使用多个线程读写同一个变量时,可能会出现与预期不符的情况。
线程的执行顺序每次都可能不一样,因为顺序由操作系统调度顺序决定。
//多线程读写测试函数
private static void MultiThreadsRW()
{
int i;
i = 0;
Thread t1 = new Thread(new ThreadStart(() =>
{
int j=5;
while (j--!=0)
{
i++;
WriteLine($"{i} (t1)");
}
}));
Thread t2 = new Thread(new ThreadStart(() =>
{
int j=5;
while (j--!=0)
{
i++;
WriteLine($"{i} (t2)");
}
}));
t1.Start();
t2.Start();
WriteLine(i);
}
执行结果:
(前面数字为i的输出值,括号中是线程的编号)
执行过程:
i的初始值为0
原文:https://www.cnblogs.com/zokf7cc/p/14944287.html