tengo este código:serie de roscas 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();
}
la función k es la siguiente:
void k(int i)
{
while(true)
Console.WriteLine(i);
}
por alguna razón sólo el último hilo está en funcionamiento y la impresión 4444444 .... qué no están todos los hilos en ejecución?
Esto tiene que ser la variante más excéntrica del cierre-over-the-loop variable pregunta estándar que he visto nunca. –
Este es aún más similar: http://stackoverflow.com/questions/1930133/c-closures-why-is-the-loopvariable-captured-by-reference –
Relacionado: "Cierre de la variable de bucle considerado perjudicial" por Eric Lippert. http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx –