¿El bucle Thread.Sleep () sería malo para el rendimiento cuando se usa para pausar un hilo?
Se ha hablado (o se ha hablado) sobre si es bueno o malo usar elThread.Sleep()
método. Por lo que entiendo, se debe utilizar principalmente para fines de depuración.
Ahora me pregunto: ¿es malo usarlo para mi propósito específico, es decir, hacer un bucle constante para poder pausar / reanudar el hilo? Hago esto porque quiero pausar un hilo que realiza operaciones de E / S y poder reanudarlo de una manera simple.
Las operaciones de E / S son básicamente solo escribir bloques de 4096 bytes en un archivo hasta que se hayan escrito todos los datos en él. Como el archivo puede ser grande y tomar mucho tiempo, quiero poder pausar la operación (en caso de que comience a consumir muchos recursos del sistema).
Mi código, versión VB.NET:
'Class level.
Private BytesWritten As Long = 0
Private Pause As Boolean = False
'Method (thread) level.
While BytesWritten < [target file size]
...write 4096 byte buffer to file...
While Pause = True
Thread.Sleep(250)
End While
...do some more stuff...
End While
C # equivalente:
//Class level.
long bytesWritten = 0;
bool pause = false;
//Method (thread) level.
while(bytesWritten < [target file size]) {
...write 4096 byte buffer to file...
while(pause == true) {
Thread.Sleep(250);
}
...do some more stuff...
}
He oído sobre ResetEvents y sé un poco sobre lo que hacen, pero nunca los he investigado mucho.