Así que investigué y encontré que puedes crear un objeto boost :: thread y hacer que comience con una función de clase no estática usando "this" y aumentar :: bind, etc. Realmente no tiene mucho sentido para mí y todos los ejemplos que pude encontrar tenían el objeto boost :: thread lanzado dentro de la misma clase que la función con la que estaba empezando, por lo que podría usarse. Sin embargo, estoy lanzando el hilo en una clase diferente, así que me temo que al usar "esto", diré que "esto" es de la clase de la que estoy creando el hilo, en lugar de aquella en la que está la función (Probablemente estoy equivocado, necesito aprender más sobre este "este" chico). Aquí hay un ejemplo de mi fuente con la que estoy teniendo el problema.Usando el hilo de refuerzo y una función de clase no estática
ANNGUI.h
class ANNGUI { private: boost::thread *GUIThread; Main *GUIMain; public: // Creates the entire GUI and all sub-parts. int CreateGUI(); }
ANNGUI.cpp
int ANNGUI::CreateGUI() { GUIMain = new Main(); GUIThread = new boost::thread(GUIMain->MainThreadFunc); };
Esto no es todo la fuente, pero creo que mi problema es aquí en alguna parte, yo sé que tengo que hacer frente a la "esto" de alguna manera, pero no estoy seguro de cómo. Podría usar una función estática, pero tampoco quería que mis variables estuvieran estáticas. Gracias.
Además, ¿hay algún recurso muy bueno para usar cualquier biblioteca de impulso? La documentación de su sitio web parece buena, pero por encima de mi cabeza.
¿Se requiere 'nuevo'? Si creo el hilo como variable local normal, ¿no funcionará? –
que pasa si llamo boost :: thread * thr = new boost :: thread (boost :: bind (y Foo :: some_function, this)); ¿¿dos veces?? –