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;
}