Hola,
A ver si alguien me echar una mano.
Tengo una aplicación que crea un Thread y lo lanza en ejecución a un
determinado método.
El método que ejecuta el Thread, tiene un bucle con bastantes iteraciones
(100.000)
Mi idea es comprobar el funcionamiento de BeginCriticalRegion() y
EndCriticalRegion().
Para ello, encierro el bucle en la región crítica:
void Método(){
BeginCriticalRegion();
for(int i=0;i<1000;i++){
Console.WriteLine(i);
}
EndCriticalRegion();
}
Desde la aplicación principal hago lo siguiente:
...
Thread hilo=new Thread(new StratThread(Metodo));
hilo.Start(100);
Thread.Sleep(); //le doy tiempo al hilo a que entre en el buble
hilo.Abort();
Console.ReadLine(); // detengo el programa principal
Mi idea tal y como entiendo las regiones críticas, es que una vez dentro del
bucle, la llamada Abort no tiene efecto hasta que el hilo salga de el. Sin
embargo, el hilo no llega a completar más que un centenar de iteraciones, de
idéntica forma que sin regiones críticas
Algo estoy haciendo mal o no entendido su funcionamiento.
Muchas gracias antes de nada
Un saludo
Aurelio Martínez Corchano
Grupo LoUISE
Universidad de Castilla - La Mancha
Leer las respuestas