[Jderobot] problema con C++
Laura Martín
lmr92 en hotmail.es
Mie Jul 30 10:49:51 CEST 2014
Muchas gracias Ildefonso, me ha quedado bastante claro igual cuando me ponga a hacerlo me surgen problemillas, pero ya lo he entendido y sé por dónde encaminarme :)
MuchÃsimas gracias de nuevo.
Un saludo,
Laura M.
Ildefonso González Sánchez <i.gonzalezsan en alumnos.urjc.es> wrote:
>Hola Laura,
>
>
>por lo que he podido ver creo que el problema, es que no estas utilizando memoria compartida entre los hilos, para ello la mejor forma que conozco es la siguiente:
>
>-te creas un par de ficheros shared.cpp, shared.h (por ejemplo)
>
>-en shared.h te declaras la estructura que comentas
>
> struct item{
> std::string name;
> bool isActivate;
>};
>
>y te defines el array (pero como tipo de dato estático, esto quiere decir que siempre va a ocupar la misma posición de memoria, solo se declarara una vez y lo hilos podrán acceder a esta memoria y modificarla)
>
>static struct item items[100];
>
>
>Por último te defines, las cabeceras funciones constructor, destructor, set y get para acceder desde los hilos de un modo externo.
>
>-en el fichero shared.cpp, vuelves a declarar el array y el cuerpo de las funciones.
>
>
>De este modo, puedes incluir un mutex para controlar la concurrencia de los hilos cada vez que accedas a las posiciones de array desde estas funciones.(pthread_mutex_lock()/unlock() si usas poixis)
>
>
>Y el modo de acceder, seria declarar el objeto desde el hilo y utilizar la función.
>
>
>Micomponente::Shared mem;
>
>mem.set();
>
>o lo que es lo mismo, con punteros:
>
>Micomponente::Shared *mem = new Micomponente::Shared::SM();
>
>mem->set();
>
>
>Un saludo, espero que te sirva.
>
>
>Ildefonso González Sánchez
>
>
>
>________________________________
>De: jde-developers-bounces en gsyc.es <jde-developers-bounces en gsyc.es> en nombre de Laura MartÃn RamÃrez <lmr92 en hotmail.es>
>Enviado: martes, 29 de julio de 2014 16:33
>Para: jderobot en gsyc.es
>Cc: borjamonserrano en gmail.com
>Asunto: [Jderobot] problema con C++
>
>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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20140730/67a8284f/attachment.html
More information about the Jde-developers
mailing list