我有一個類,有一些功能,如printf("hello main thread");
和printf("hello thread created inside class");
。每個人都可以理論上使用類變量。如何將其中一個功能放入線程中? (C++使用Boost庫)如何將類內的函數放入線程中? (C++使用Boost)
0
A
回答
1
typedef boost::shared_ptr<boost::thread> thread_ptr;
class your_class : boost::noncopyable {
public:
void run();
void join();
void signal_stop();
private:
void your_thread_func();
thread_ptr thread_;
};
void your_class::run()
{
thread_ = thread_ptr(new boost::thread(boost::bind<void>(&your_class::your_thread_func, this)));
}
void your_class::join()
{
if (thread_) {
thread_->join();
}
}
2
您可以使用Boost.Bind
。
class Foo {
public:
void someMethod(const std::string & text);
};
Foo foo;
boost::thread(boost::bind(&Foo::someMethod, &foo, "Text"));
4
看看boost::bind
。
class Class
{
public:
void method(const char*);
};
// instance is an instance of Class
boost::thread(boost::bind(&Class::method, &instance, "hello main thread"));
應該這樣做。
但是,請注意boost::thread
有一個構造函數已經這樣做:請參閱this link。
所以,你可以基本上只是做:
boost::thread(&Class::method, &instance, "hello main thread");
相關問題
- 1. 其中Boost :: Variant和function_types:如何將函數放入Boost :: variant?
- 2. C++ boost ::線程,如何啓動線程內的線程
- 3. 如何使用boost作爲線程函數的類成員函數
- 4. 如何傳遞函數中的值並將該函數放入線程中?
- 5. Boost線程不調用線程函數
- 6. 如何啓動一個運行類函數的boost線程?
- 7. C++ //將Boost :: array傳遞給Boost ::線程
- 8. 在boost線程中調用一個類的成員函數
- 9. boost ::線程函數執行
- 10. 的boost ::類中的線程
- 11. 調用成員函數作爲線程函數使用boost
- 12. C++中的線程數組Boost
- 13. 不使用boost lib的C++線程池
- 14. 將多線程執行的函數放入隊列中
- 15. 如何在類函數內部創建線程?
- 16. 如何線程可調用的函數誰是一類
- 17. 如何在函數內部使用線程實例函數?
- 18. 如何使用Boost庫在C++中爲C#StreamProxyApplication函數創建模擬類型?
- 19. 如何在C++中使用boost創建並行線程?
- 20. 如何在C++中使用boost來創建線程池?
- 21. C++ Boost:來自父線程的調用函數
- 22. C++從它的線程函數引用boost :: thread
- 23. C#將「返回」放入函數中?
- 24. 如何將HashMap放入AngularJs函數中
- 25. 在線程內使用boost :: asio :: deadline_timer
- 26. 如何在boost中使用digamma函數
- 27. C++線程 - 如果調用類函數,哪個線程將執行該工作
- 28. 如何在使用C++ 11線程類的單獨線程中執行類成員函數?
- 29. 如何從mainWindow類(Principal)中加入運行函數的線程?
- 30. 如何使用Boost創建線程
我很困惑,你是什麼意思*每個人都可以使用理論上類變量*? – 2010-11-08 10:16:00
@ Space_C0wb0y:我想他的意思是一個「方法」 – ereOn 2010-11-08 10:43:52
什麼是一個函數到線程完全? – valdo 2010-11-08 12:34:26