Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Attach Thread

Iniciado por 1cacalvo, 24 de Septiembre de 2008, 05:18:00 PM

« anterior - próximo »

1cacalvo

Hola...

One question!!!

Tengo un problema de coj.. hilos, resulta que estoy en un proceso con varios hilos de ejecución (haciendo cosillas dentro de Autocad) y necesito llamar a las funciones de Acad en el mismo hilo desde que tengo el punto de entrada a la aplicación (a autocad). Pero el problema es que a la hora de llamar a las funciones de la API estoy en otro hilo. ¿Como puedo llamar a esa función desde el hilo de ACAD?

Estoy mirando en la boost::thread pero no consigo ver la solución, eso si, si creo un tercer hilo del tipo "boost::thread thr1(boost::bind(&MyFunction))" peta como un campeon...

                      Graciñas!!!

1cacalvo

Ufff he leido el post y no se si me lio la explicación asi que la voy a intentar dejar mas clara en menos palabras...


Lo que quiero es ejecutar una función en un hilo que ya existe y que no es el actual...

Titonus

Desconozco el funcionamiento de la API de autocad y la boost::thread, pero a primera vista parece que lo que comentas no es factible puesto que supongo que el proceso/hilo principal (ejecutable autocad) es el que crea el hilo al cual tu tienes acceso (puedes programar, etc...).
Aunque al ser un hilo compartas memoria con el proceso, éste se habrá protegido lo suficiente para evitar petadas y compartamientos inesperados (salvo hack). Aún así quizás puedas mandarle, desde el hilo, ordenes al proceso a través de la API/framework que te ofrezca autocad. También y como buen hilo que eres, puedes obtener el ID del proceso que te creó en el sistema y hacer todo tipo de perrerías que el SO en cuestión te permita.

Si entendí mal, y eres tú el proceso (creado por el autocad) que crea hilos entonces una solución que se base en el uso de eventos, mutexes, semáforos y/o variables de condición puede valerte.

Ruben

Hi,
no se si habras intentado ya la via de los mensajes. Intenta mandar un mensaje al hilo de cad para que cuando lo reciba ejecute la funcion que quieres.

Para hacer esto, yo primero veria si cad me ofrece algo de mensajeria entre hilos con su sdk. Si no, intentaria ir por la via de mensajes de windows. Los hilos de windows pueden tener una cola de mensajes, como la de las ventanas, asi que lo que investigaria es como hacer para que usando el identificador del hilo de cad, se pudiera montar la cola de mensajes y como implementar el que despacha los mensajes.

Si te congratula esto, te paso mas info   :)

Un saludo,
Ruben

1cacalvo

CitarHi,
no se si habras intentado ya la via de los mensajes

Pues ese camino estoy intentando, y por lo que veo pues puede ser una solución porque efectivamente cuando le manda un mensaje a la ventana de procedimiento CAD el mismo S0 (Windows) se encarga de enrutarlo por el hilo adecuado...

Muchas gracias a todos!!!






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.