Semáforo Binario

26 views
Skip to first unread message

Pablo Javier Mur

unread,
Jul 21, 2020, 7:46:05 AM7/21/20
to ClubSmalltalk

Hola, necestito hacer un semáforo binario para Dolphin SmallTalk, Alguién conoce si hay alguna implementación?
El Mutex que tiene Dolphin no me sirve para lo que yo necesito y la clase Semaphore no me sirve porque ante varios "signal" se incrementa el número de procesos concurrentes.
Yo creé una clase propia, la cual les subo la implementación, pero no sé si está del todo bien. Probé con varios test obteneindo buenos resultados pero aún así me genera dudas.

Object subclass: #BinarySemaphore
    instanceVariableNames: 'semaforoBinario'
    classVariableNames: ''
    poolDictionaries: ''
    classInstanceVariableNames: ''

initialize
    semaforoBinario := Semaphore forMutualExclusion.

isEnabled
    [^semaforoBinario excessSignals > 0] critical.

signal
    "[semaforoBinario isEmpty ifTrue: [semaforoBinario set] ifFalse: [semaforoBinario pulse]] critical"

    [semaforoBinario excessSignals > 0 ifTrue: [semaforoBinario set] ifFalse: [semaforoBinario signal]]
        critical

wait
    semaforoBinario wait

Estoy usando Dolphin SmallTalk 7.1.9
Desde ya muchas gracias por su tiempo.
Saludos
Reply all
Reply to author
Forward
0 new messages