Para a maioria dos casos de uso de flock
, é muito importante que o arquivo de bloqueio não seja "limpo". Caso contrário, imagine este cenário:
- o processo A abre o arquivo de bloqueio, descobre que ele não existe e, por isso, o cria.
- processo A adquire o bloqueio
- o processo B abre o bloqueio (encontra já existe)
- o processo B tenta adquirir o bloqueio mas tem que esperar
- processo A libera o bloqueio
- o processo B adquire o bloqueio instantaneamente
- processo A exclui o arquivo de bloqueio
- o processo C abre o arquivo de bloqueio, descobre que ele não existe e cria um novo. Observe que agora ele está mantendo aberto um arquivo de bloqueio diferente que aquele que o processo B bloqueou.
- o processo C tenta adquirir o bloqueio e é bem-sucedido ... mas deve ter que esperar, porque o processo B ainda tem [uma encarnação anterior de] o arquivo de bloqueio aberto e bloqueado.