Articles of locking

Cómo adquirir un candado con una llave

¿Cuál es la mejor manera de evitar la actualización simultánea de un registro en un conjunto clave-valor sin bloquear todo el conjunto? Semánticamente, estoy buscando algún tipo de locking por una clave (idealmente, la implementación de Java, pero no necesariamente): interface LockByKey { void lock(String key); // acquire an exclusive lock for a key void […]

Adquirir / liberar semántica con tiendas no temporales en x64

Tengo algo como: if (f = acquire_load() == ) { … use Foo } y: auto f = new Foo(); release_store(f) Es fácil imaginar una implementación de acquire_load y release_store que use atomic con load (memory_order_acquire) y store (memory_order_release). Pero ahora, ¿qué ocurre si release_store se implementa con _mm_stream_si64, una escritura no temporal, que no […]

¿Puede x86 reordenar una tienda estrecha con una carga más amplia que la contiene por completo?

El Manual del desarrollador de software Intel® 64 e IA-32 Architectures dice: 8.2.3.4 Las cargas pueden reordenarse con tiendas anteriores en diferentes ubicaciones El modelo de ordenamiento de memoria Intel-64 permite reordenar una carga con una tienda anterior a una ubicación diferente. Sin embargo, las cargas no se reordenan con las tiendas en la misma […]

¿Cómo manejan los sistemas de archivos la lectura / escritura concurrente?

El usuario A le pide al sistema que lea el archivo foo y al mismo tiempo el usuario B quiere guardar sus datos en el mismo archivo. ¿Cómo se maneja esta situación en el nivel del sistema de archivos?

¿Por qué el objeto de locking debe ser estático?

Es muy común usar un objeto privado de lectura estática para bloquear en múltiples subprocesos. Entiendo que privado reduce los puntos de entrada al objeto de locking al apretar la encapsulación y, por lo tanto, acceder a la más esencial. Pero, ¿por qué estático? private static readonly object Locker = new object(); Al final, el […]

Monitor contra locking

¿Cuándo es apropiado utilizar la clase Monitor o la palabra clave de lock para la seguridad de subprocesos en C #? EDITAR: Parece de las respuestas hasta ahora que el lock es corto para una serie de llamadas a la clase Monitor . ¿Para qué sirve exactamente la llamada de locking para abreviar? O más […]

¿Cuáles son las diferencias entre varias opciones de sincronización de subprocesamiento en C #?

¿Alguien puede explicar la diferencia entre: lock (someobject) {} Usando Mutex Usando semáforo Usando el monitor Usar otras clases de sincronización de .Net Simplemente no puedo resolverlo. Me parece que los dos primeros son lo mismo?

¿Se solicita la garantía lock () adquirida?

Cuando varios hilos solicitan un locking en el mismo objeto, ¿garantiza el CLR que los lockings se obtendrán en el orden en que se solicitaron? Escribí una prueba para ver si esto era cierto, y parece indicar que sí, pero no estoy seguro de si esto es definitivo. class LockSequence { private static readonly object […]

Seguridad de hilo C # con get / set

Esta es una pregunta detallada para C #. Supongamos que tengo una clase con un objeto y ese objeto está protegido por un locking: Object mLock = new Object(); MyObject property; public MyObject MyProperty { get { return property; } set { property = value; } } Quiero que un hilo de sondeo pueda consultar […]

¿Cuál es la mejor manera de garantizar que solo se ejecute una instancia de un script Bash?

¿Cuál es la mejor / la mejor forma de garantizar que solo se ejecute una instancia de un determinado guión, suponiendo que sea Bash en Linux? En este momento estoy haciendo: ps -C script.name.sh > /dev/null 2>&1 || ./script.name.sh pero tiene varios problemas: pone el cheque fuera de la secuencia de comandos no me permite […]