J'ai plusieurs threads en cours d'exécution à partir de différentes fenêtres de terminal dans Ubuntu essayant d'écrire dans le même fichier.
Je voudrais verrouiller le fichier via un terminal lors de l'écriture afin que les autres threads doivent attendre pour écrire jusqu'à ce que le verrou est libéré. Comment puis-je faire cela?
Utiliser flock
est probablement le moyen le plus simple pour trois scripts Shell concurrents. Supposons que vous avez un chemin unique vers un fichier de verrouillage appelé /run/lock/myapp
.
# in terminal 1
flock /run/lock/myapp sleep 10
# in terminal 2
flock /run/lock/myapp echo "hello"
Si vous les exécutez à peu près au même moment (le premier en premier), le second attendra 10 secondes avant de s'exécuter.
Si vous êtes profondément dans un autre langage de programmation, il y aura d'autres moyens de mieux gérer cela.