Tengo un problema para crear archivos de forma paralela.
tengo 5 hilos para crear N archivos (siempre sobre 10), pero por algún motivo no funciona como creo.
Dejo parte del código para explicarme mejor:
Primero creao los hilos y les doy la función con sus parametros a ejecutar (primer for) y luego los ejecuto cada uno de ellos (segundo for)
Código
for (int i = 0; i < inter; i++) { } for (int i = 0; i < inter; i++) { ThreadsPool[i].Start(); }
A continuación muestro parte de la Func1
Código
private static void Func1(long initial, long final, int index) { try { semaphore.WaitOne(); .... stream = File.Create("D:/temp_"+i+".tmp"); // LINEA CON PROBLEMAS do { .... } while (...); } finally { semaphore.Release(); } }
Estoy utilizando un semaforo de capacidad 5, pero por algún motivo cuando ejecuto los threads, siempre tratan de crear el mismo archivo, por lo que el programa cae ya que mas de un hilo trata de sobre escribir al mismo tiempo.
Intente con un lock justo en ese tramo, pero el error se mantiene.
¿Alguna idea de que puede ser? ya que si comento la línea para crear el archivo el resto del código que tengo se ejecuta sin ningun problema.