Comparar e intercambiar sobre objetos del sistema de archivos compatibles con POSIX

Hay varias operaciones que los sistemas operativos compatibles con POSIX pueden realizar atómicamente con objetos del sistema de archivos (archivos y carpetas). Aquí hay una lista de talespresumiblemente operaciones atómicas:

renombrar o mover archivo o carpetacrear enlace durocrear enlace simbólicocrear carpetacrear y abrir un archivo vacío

¿Es posible construir un algoritmo de Comparar e Intercambiar para manipular un archivo basado en estas operaciones?

Supongamos que tenemos varios procesos que realizan lectura / escritura concurrentes en un solo archivo. Un archivo se caracteriza por su revisión. Digamos que la revisión se agrega al nombre del archivo, y hay un enlace simbólico al archivo que los procesos pueden usar para leerlo. Los procesos no pueden (por alguna razón) sincronizarse con mutexes, semáforos, etc., pero pueden crear archivos y carpetas auxiliares. ¿Pueden realizar modificaciones del archivo basadas en la revisión de Comparar e Intercambiar (crear un nuevo archivo, crear y cambiar el nombre del enlace simbólico), en el sentido de que si varios procesos van a modificarlo simultáneamente, uno tendrá éxito y el resto lo hará fallar con algún código de error?

El algoritmo tiene que ser resistente a la terminación repentina de cualquier proceso en cualquier paso del algoritmo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta