【发布时间】:2012-03-05 13:21:13
【问题描述】:
我需要在类的 ctor 中初始化一个 std::thread。线程应该运行类本身的成员函数。在 ctor 中尝试初始化线程时,程序会尝试运行成员函数。 (实现了移动语义)。
Page::Page(Motion *_parent):
parent(_parent)
{
std::thread x(&Page::play,this);
starter = std::move(x);
}
程序运行play() of this!
编辑:我这样做:
void Page::start()
{
std::thread x(&Page::play,this);
x.join();
}
并且工作正常,但不知道是否可以...现在我正在使用std::bind,如果这是标准的做法,我将替换代码。
【问题讨论】:
-
我不明白你的问题是什么。
-
@kukyakya:问题出在 ctor 的第一行,程序运行
this->play()。 -
@Joachim:我想不通...
-
@SorushRabiee 但这有什么问题吗?很难理解你的问题。
-
@DavidSchwartz 我有一个成员函数
play()和一个std::thread starter作为类的成员。我想用实例的play初始化那个线程。
标签: c++ multithreading c++11 std