Semaphore

Hereda: RefCounted < Object

Un mecanismo de sincronización utilizado para controlar el acceso a un recurso compartido por Threads.

Descripción

Un semáforo de sincronización que se puede utilizar para sincronizar múltiples Threads. Inicializado a cero en la creación. Para una versión binaria, consulta Mutex.

Advertencia: Los semáforos deben utilizarse con cuidado para evitar interbloqueos.

Advertencia: Para garantizar que el sistema operativo pueda realizar una limpieza adecuada (sin bloqueos, sin interbloqueos), se deben cumplir estas condiciones:

  • Cuando el recuento de referencias de un Semaphore llega a cero y, por lo tanto, se destruye, ningún hilo debe estar esperando en él.

  • Cuando el recuento de referencias de un Thread llega a cero y, por lo tanto, se destruye, no debe estar esperando en ningún semáforo.

Tutoriales

Métodos

void

post(count: int = 1)

bool

try_wait()

void

wait()


Descripciones de Métodos

void post(count: int = 1) 🔗

Reduce el Semaphore, permitiendo la entrada a un hilo, o más si se especifica count.


bool try_wait() 🔗

Como wait(), pero no se bloqueará, por lo que si el valor es cero, falla inmediatamente y devuelve false. Si no es cero, devuelve true para indicar éxito.


void wait() 🔗

Espera al Semaphore, si su valor es cero, se bloquea hasta que no sea cero.