我需要在 C++ 类中嵌入一个线程,这是一种活动对象,但不完全是。我正在从类的构造函数中生成线程,这样做可以吗?这种方法有什么问题吗?
#include <iostream>
#include <thread>
#include <unistd.h>
class xfer
{
int i;
std::shared_ptr<std::thread> thr;
struct runnable {
friend class xfer;
void operator()(xfer *x) {
std::cerr<<"thread started, xfer.i:"<<x->i;
}
} run;
public:
xfer() try : i(100), thr(new std::thread(std::bind(run, this))) { } catch(...) { }
~xfer() { thr->join(); }
};
int
main(int ac, char **av)
{
xfer x1;
return 0;
}