Zrobiłem kilka badań i odkryłem, że możesz utworzyć obiekt boost :: thread i rozpocząć od niestatycznej funkcji klasowej za pomocą "tego" i zwiększenia :: bind itd. To naprawdę nie ma dla mnie większego sensu i wszystkie przykłady, jakie mogłem znaleźć, zawierały obiekt boost :: thread uruchamiany w tej samej klasie co funkcja, z której zaczynał się więc to może być użyte. Ja jednak uruchamiam wątek w innej klasie, więc obawiam się, że używając "tego", powiem, że "to" pochodzi z klasy, z której utworzę wątek, a nie z tej funkcji (Prawdopodobnie jestem w błędzie, muszę dowiedzieć się więcej o tym "tym" facecie). Oto przykład mojego źródła, z którym mam problem.Używanie wątku doładowania i niestanowiącej klasy funkcji
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); };
To nie jest tym źródłem, ale myślę, że mój problem jest gdzieś tutaj, wiem, że mam do czynienia z "to" jakoś, ale nie jestem pewien jak. Mogłem użyć funkcji statycznej, ale tak naprawdę nie chciałem również uczynić moich zmiennych statycznymi. Dzięki.
Czy istnieje również bardzo dobry zasób do korzystania z bibliotek doładowania? Ich dokumentacja witryny wygląda dobrze, ale nad moją głową.
Czy 'nowy' jest absolutnie wymagany? Jeśli utworzę wątek jako normalną zmienną lokalną, czy to nie zadziała? –
co jeśli zadzwonię do boost :: thread * thr = new boost :: thread (boost :: bind (& Foo :: some_function, this)); dwa razy?? –