tôi có mã này:mảng của bài C#
Thread[] threadsArray = new Thread[4];
for (int i = 0; i < 4; i++)
{
threadsArray[i] = new Thread(() => c1.k(i));
}
for (int i = 0; i < 4; i++)
{
threadsArray[i].Start();
}
for (int i = 0; i < 4; i++)
{
threadsArray[i].Join();
}
chức năng k là thế này:
void k(int i)
{
while(true)
Console.WriteLine(i);
}
vì một lý do chỉ là chủ đề cuối cùng đang chạy và in 4.444.444 .... tại sao không phải tất cả các chủ đề đều chạy?
này có phải là biến thể kỳ quặc nhất của việc đóng cửa-over-the-loop-biến câu hỏi tiêu chuẩn mà tôi từng thấy. –
Điều này thậm chí còn tương tự hơn: http://stackoverflow.com/questions/1930133/c-closures-why-is-the-loopvariable-captured-by-reference –
Liên quan: "Đóng trên biến vòng lặp được coi là có hại" bởi Eric Lippert. http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx –