Ожидание нескольких потоков с использованием WaitForMultipleObjects

В подобных случаях полезно использовать нестатические функции-члены как свободные функции, которые принимают this в качестве первого параметра, например, в вашем случае void MainThreadFunc(Main* this).

boost::thread принимает нулевой функтор, поэтому вам нужно передать ему нулевой функтор, который содержит ссылку на экземпляр GUIMain и вызовы GUIMain->MainThreadFunc, которые, как я объяснил выше, были бы чем-то как MainThreadFunc(GUIMain).

Boost (и теперь также C ++ с TR1) предоставляет помощники для создания таких функторов, а именно boost::bind (или, альтернативно, boost::lambda::bind). Выражение boost::bind(f, arg1, arg2, ...) означает «вернуть нулевой функтор, который вызывает f(arg1, arg2, ...)».

При этом вы можете использовать следующее выражение для создания потока:

GUIThread = new boost::thread(boost::bind(&Main::MainThreadFunc, GUIMain))
10
задан Salvador 28 July 2011 в 23:44
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: