Loop Thread.Sleep () seria ruim para o desempenho quando usado para pausar um thread?
Há (ou tem havido) muita conversa sobre se é bom ou ruim usar oThread.Sleep()
método. Pelo que entendi, é principalmente para ser usado para fins de depuração.
Agora eu me pergunto: é ruim usar para meu objetivo específico, ou seja, fazer um loop constante para poder pausar / retomar o thread? Faço isso porque quero pausar um encadeamento que executa operações de E / S e poder retomar isso de uma maneira simples.
As operações de E / S estão basicamente gravando blocos de 4096 bytes em um arquivo até que todos os dados tenham sido gravados nele. Como o arquivo pode ser grande e levar muito tempo, desejo poder pausar a operação (caso comece a consumir muitos recursos do sistema).
Meu código, versão do 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...
}
Ouvi falar do ResetEvents e sei um pouco sobre o que eles fazem, mas nunca realmente gostei muito deles.