Semáforo Binario

Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Semáforo Binario

Pablo Javier Mur

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<img src="data:;base64,77u/IkZpbGVkIG91dCBmcm9tIERvbHBoaW4gU21hbGx0YWxrIDciIQ0KDQpPYmplY3Qgc3ViY2xhc3M6ICNCaW5hcnlTZW1hcGhvcmUNCglpbnN0YW5jZVZhcmlhYmxlTmFtZXM6ICdzZW1hZm9yb0JpbmFyaW8nDQoJY2xhc3NWYXJpYWJsZU5hbWVzOiAnJw0KCXBvb2xEaWN0aW9uYXJpZXM6ICcnDQoJY2xhc3NJbnN0YW5jZVZhcmlhYmxlTmFtZXM6ICcnIQ0KQmluYXJ5U2VtYXBob3JlIGd1aWQ6IChHVUlEIGZyb21TdHJpbmc6ICd7OGM4NjdkNTYtMTgxZC00NmI1LWFjYjAtODI1ZDY3YTdlOWExfScpIQ0KQmluYXJ5U2VtYXBob3JlIGNvbW1lbnQ6ICcnIQ0KIUJpbmFyeVNlbWFwaG9yZSBjYXRlZ29yaWVzRm9yQ2xhc3MhS2VybmVsLU9iamVjdHMhICENCiFCaW5hcnlTZW1hcGhvcmUgbWV0aG9kc0ZvciENCg0KaW5pdGlhbGl6ZQ0KCXNlbWFmb3JvQmluYXJpbyA6PSBTZW1hcGhvcmUgZm9yTXV0dWFsRXhjbHVzaW9uIQ0KDQppc0VuYWJsZWQNCglbXnNlbWFmb3JvQmluYXJpbyBleGNlc3NTaWduYWxzID4gMF0gY3JpdGljYWwhDQoNCnJlc2V0DQoJc2VtYWZvcm9CaW5hcmlvIHJlc2V0IQ0KDQpzaWduYWwNCgkiW3NlbWFmb3JvQmluYXJpbyBpc0VtcHR5IGlmVHJ1ZTogW3NlbWFmb3JvQmluYXJpbyBzZXRdIGlmRmFsc2U6IFtzZW1hZm9yb0JpbmFyaW8gcHVsc2VdXSBjcml0aWNhbCINCg0KCVtzZW1hZm9yb0JpbmFyaW8gZXhjZXNzU2lnbmFscyA+IDAgaWZUcnVlOiBbc2VtYWZvcm9CaW5hcmlvIHNldF0gaWZGYWxzZTogW3NlbWFmb3JvQmluYXJpbyBzaWduYWxdXQ0KCQljcml0aWNhbCENCg0Kc2l6ZQ0KCVtec2VtYWZvcm9CaW5hcmlvIHNpemVdIGNyaXRpY2FsIQ0KDQp3YWl0DQoJc2VtYWZvcm9CaW5hcmlvIHdhaXQhICENCiFCaW5hcnlTZW1hcGhvcmUgY2F0ZWdvcmllc0ZvcjogI2luaXRpYWxpemUhcHVibGljISAhDQohQmluYXJ5U2VtYXBob3JlIGNhdGVnb3JpZXNGb3I6ICNpc0VuYWJsZWQhcHVibGljISAhDQohQmluYXJ5U2VtYXBob3JlIGNhdGVnb3JpZXNGb3I6ICNyZXNldCFwdWJsaWMhICENCiFCaW5hcnlTZW1hcGhvcmUgY2F0ZWdvcmllc0ZvcjogI3NpZ25hbCFwdWJsaWMhICENCiFCaW5hcnlTZW1hcGhvcmUgY2F0ZWdvcmllc0ZvcjogI3NpemUhcHVibGljISAhDQohQmluYXJ5U2VtYXBob3JlIGNhdGVnb3JpZXNGb3I6ICN3YWl0IXB1YmxpYyEgIQ0KDQohQmluYXJ5U2VtYXBob3JlIGNsYXNzIG1ldGhvZHNGb3IhDQoNCm5ldw0KCV5zZWxmIGJhc2ljTmV3IGluaXRpYWxpemUhICENCiFCaW5hcnlTZW1hcGhvcmUgY2xhc3MgY2F0ZWdvcmllc0ZvcjogI25ldyFwdWJsaWMhICENCg0K" alt="" data-atf="false">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

--
--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
---
Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a [hidden email].
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/clubsmalltalk/79c55bb3-2249-49fe-948b-59f0e19addffn%40googlegroups.com.