线程不打印顺序
本文关键字:顺序 打印 线程 | 更新日期: 2023-09-27 18:33:24
此代码不会按预期按顺序打印数字,如下所示:
012345678910
怎么了?
static void Main()
{
for (int i = 0; i < 10; i++)
{
int temp = i;
new Thread(() => Console.Write(temp)).Start();
}
}
你引用 http://www.albahari.com/threading/#_Introduction。
我假设您正在谈论"Lambda 表达式和捕获的变量"部分,作者在其中展示了"捕获的变量"的问题,并展示了如何使用临时变量避免该问题。
但请注意,作者并没有声称这会导致数字 0 - 9 按顺序显示。他声称(尽管他没有显示它)是 10 个线程中的每一个都将显示一个数字 0 - 9。但可能不按顺序。
这是因为线程是不可预测的,并且是随操作系统的心血来潮调度的。