[Jderobot] problema con C++

Luis Roberto Morales lr.morales.iglesias en gmail.com
Mie Jul 30 01:19:57 CEST 2014


Buenas noches,

si no he entendido mal, el programa con el que estás probando consiste en
dos hilos siguiendo un esquema de lector/escritor (un hilo lee de la
variable compartida y el otro escribe). Para hacerme una idea mejor qué
puede estar fallando necesitaría ver el código con el que estás probando a
hacer esto, ya que el planteamiento que describes no parece estar mal.
Generalmente, ese problema puede ocurrir porque no se han controlado
correctamente las condiciones de carrera entre ambos hilos y por ejemplo el
lector entra a leer una posición antes que el escritor escriba; porque la
variable compartida es un atributo de una clase y se han instanciado dos
objetos distintos (uno para el escritor y otro para el lector); o porque,
por algún despiste, se está leyendo una posición no escrita.

Un saludo,
Roberto



El 29 de julio de 2014, 18:33, Laura Martín Ramírez <lmr92 en hotmail.es>
escribió:

>  Hola a todos,
>
> Estoy desarrollando la herramienta visual HFSM y tengo problema con C++.
> He hablado con JoseMaria y me ha comentado que estáis más duchos con C++ y
> podréis echarme una mano.
>
> Quiero declarar un array de structs y modificarlos desde distintos hilos.
> Para ello me declaro el struct de la siguiente manera:
>
>
>
>
> *struct item{    std::string name;     bool isActivate;};*
>
>
> Y el array lo declaro así:
>
> *struct item items[100];*
>
> Todo esto lo pongo dentro de la clase que creo, es decir después de :
>
> #include <Ice/Ice.h>
> #include <IceUtil/IceUtil.h>
> #include <gtkmm.h>
> class Application : public Gtk::Window {
>
> Dentro de esta clase tengo unos hilos de ejecución. Y quiero modificar los
> valores de item de una posición del array por ejemplo:
>
>
>
> *items[0].name = "prueba";items[0].isActivate =1;*
>
> Al modificarlos desde dentro de un hilo no se guarda en los valores del
> array. Lo que hago es desde un hilo modificar los valores como acabo de
> escribir y desde otro lo imprimo, pero me sale el valor al que se ha
> inicializado el array.
>
> void* change ( void* ) {
>       std::cout << items[i].name << std::endl;
> }
>
> Espero haberme explicado bien.
>
> Muchas gracias,
> Laura M.
>
> _______________________________________________
> Jde-developers mailing list
> Jde-developers en gsyc.es
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20140730/b1a88272/attachment-0001.htm 


More information about the Jde-developers mailing list