Bloqueia arquivo e libera

2

Eu tenho vários threads em execução a partir de diferentes janelas de terminal no Ubuntu tentando gravar no mesmo arquivo.

Eu gostaria de bloquear o arquivo via terminal enquanto escrevo para que o outro thread (s) tem que esperar para escrever até que o bloqueio seja liberado. Como faço isso?

    
por Vignesh T.V. 23.11.2015 / 17:43

1 resposta

2

Usar flock é provavelmente a maneira mais fácil para três scripts de shell concorrentes. Vamos supor que você tenha um único caminho para um arquivo de bloqueio chamado /run/lock/myapp .

# in terminal 1
flock /run/lock/myapp sleep 10

# in terminal 2
flock /run/lock/myapp echo "hello"

Se você executá-los mais ou menos ao mesmo tempo (o primeiro primeiro), o segundo esperará 10 segundos antes de ser executado.

Se você estiver interessado em outra linguagem de programação, haverá outras maneiras de lidar melhor com isso.

    
por Oli 23.11.2015 / 18:01