Gravação simultânea de arquivos

como gravar em um arquivo de texto que pode ser acessado por várias fontes (possivelmente de maneira simultânea) garantindo que nenhuma operação de gravação seja perdida?

Como, se dois processos diferentes estão escrevendo no mesmo momento para o arquivo, isso pode levar a problemas. A solução simples (não muito rápida e não muito elegante) estaria bloqueando o arquivo ao iniciar o processo (crie um arquivo .lock ou similar) e liberá-lo (excluir o bloqueio) enquanto a escrita é feita.

Ao começar a escrever, gostaria de verificar se o arquivo .lock existe e atrasar a gravação até que o arquivo seja liberado.

Qual é o padrão recomendado para seguir para esse tipo de situação?

obrigado

EDITAR Eu quero dizer processos, como diferentes programas de clientes diferentes, usuários diferentes e assim por diante, não threads dentro do mesmo programa

questionAnswers(6)

yourAnswerToTheQuestion