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.