Sincronizacion

La sincronización se refiere al proceso de coordinar o controlar el acceso y la ejecución de múltiples hilos, procesos o componentes de un sistema, con el objetivo de garantizar una ejecución ordenada y consistente.

Serializacion

La serialización se refiere al proceso de garantizar que solo un hilo o proceso acceda a un recurso compartido a la vez. Es una técnica para evitar condiciones de carrera y garantizar la consistencia de los datos. La serialización puede lograrse mediante el uso de mecanismos de sincronización, como locks (bloqueos) o semáforos, que permiten a los hilos o procesos adquirir y liberar un recurso compartido de manera exclusiva.

Mutex (exclusión mutua)

Un mutex es un tipo de lock (bloqueo) utilizado para lograr la exclusión mutua en programación concurrente. También se conoce como semáforo binario, ya que solo puede tener dos estados: adquirido o liberado.

Un mutex actúa como un interruptor que permite a un solo hilo adquirir el mutex y acceder a un recurso compartido, mientras bloquea el acceso a otros hilos. Si un hilo intenta adquirir un mutex que ya está adquirido por otro hilo, se bloqueará y esperará hasta que el mutex se libere.

Sincronismo

El sincronismo en informática se refiere a la coordinación y control de la ejecución de procesos, hilos o componentes de un sistema para asegurar que se realicen en un orden determinado y de manera secuencial cuando sea necesario. El objetivo del sincronismo es evitar situaciones de inconsistencia o conflictos que puedan ocurrir cuando múltiples procesos o hilos intentan acceder o modificar recursos compartidos al mismo tiempo.

Lock

Un lock es un mecanismo de sincronización que permite a los hilos adquirir o liberar un recurso compartido de manera exclusiva. Cuando un hilo adquiere un lock, se dice que ha entrado en una sección crítica y tiene acceso exclusivo al recurso protegido por el lock. Otros hilos que intentan adquirir el mismo lock deben esperar hasta que el lock sea liberado por el hilo actual. Los locks proporcionan una forma sencilla y efectiva de garantizar la exclusión mutua, ya que solo un hilo puede adquirir el lock a la vez.

Notas:

Lock genera una sección critica que no tuviera dos actividades concurrentes que lo interrumpa. Seria mutex esto (podes realizar una operación a la vez, esperando a que termine el que esta excluido)

Semaforos

Un semáforo es un mecanismo de sincronización que permite controlar el acceso a un recurso compartido mediante el uso de un contador y operaciones de incremento y decremento. Un semáforo puede tener un valor entero no negativo que se utiliza para rastrear el número de recursos disponibles.

Cuando un hilo quiere acceder al recurso compartido, debe intentar adquirir el semáforo. Si el valor del semáforo es mayor a cero, el hilo puede acceder al recurso y el semáforo se decrementa en uno. Si el valor del semáforo es cero, el hilo se bloquea y espera hasta que el semáforo tenga un valor mayor a cero. Cuando un hilo ha terminado de usar el recurso, libera el semáforo incrementando su valor en uno.

Comandos de Lock

LWP == PID (main)
l.acquire()
l.release()