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 obtenein
do 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