Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





monitores

Iniciado por Alexpi, 25 de Junio de 2007, 06:01:37 PM

« anterior - próximo »

Alexpi

estoy buscando por inet algun tutorial sobre como usar monitores en c++ pero no encuentro ninguno muy bueno. Algunos hablan sobre una clase de .net pero estoy mas interesado en monitores en general, sobretodo para compilar en linux.

A ver si alguno conoce algun buen tuto :P.
Juego web www.goldpiece.net

Alexpi

bueno, parece ser que la uica opcion es implementar una clase monitor con semaforos.

Alguno tiene la clase ya hecha? :P
Juego web www.goldpiece.net

gdl

Vamos a ver. Hacer un monitor es muy fácil en C++ usando la biblioteca Boost (http://www.boost.org/).

Lo primero, tienes tu clase C++ que quieres convertirla en monitor.

Le pontes un mutex en un atributo protegido/privado.

Luego, en cada función que quieras sincronizar (en el caso de un monitor puro son todas) le haces un lock al monitor. Con Boost ni te tienes que preocupar en quitar el lock porque es RAII (http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization).

Finalmente, si ves que un método de tu clase llama a otro que hace otro lock en tu propia clase, has de tener precaución. O bien pones el mutex recursivo, o bien refactorizas la parte común del código a otro método protegido/privado sin lock.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.