Foros - Stratos

Programadores => Programación en red => Mensaje iniciado por: Alexpi en 25 de Junio de 2007, 06:01:37 PM

Título: monitores
Publicado por: Alexpi en 25 de Junio de 2007, 06:01:37 PM
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.
Título: monitores
Publicado por: Alexpi en 25 de Junio de 2007, 09:34:55 PM
bueno, parece ser que la uica opcion es implementar una clase monitor con semaforos.

Alguno tiene la clase ya hecha? :P
Título: monitores
Publicado por: gdl en 26 de Junio de 2007, 11:00:48 AM
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.