我的课程包含printf("hello main thread");
和printf("hello thread created inside class");
等功能。理论上每个都可以使用类变量。如何将其中一个函数放入线程? (使用Boost库的C ++)
答案 0 :(得分: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 :(得分:2)
您可以使用Boost.Bind
。
class Foo {
public:
void someMethod(const std::string & text);
};
Foo foo;
boost::thread(boost::bind(&Foo::someMethod, &foo, "Text"));
答案 2 :(得分: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();
}
}