我有一个类foo
,我在一个成员函数中放入了一个线程对象,我尝试在另一个函数中像这样初始化它,我的问题是,我得到了相同的thread::get_id
,但有一个不同的函数foo::mycount
,我需要计数一些东西,myprint
和mycount
都使用this_thread::sleep_for
,但它们没有单独休眠(我希望发生的事情)。我会用一些代码示例来跟进
class foo
{
void func()
{
std::thread mythread(&foo::myprint, this);
mythread.join();
}
void myprint()
{
sleep_for(1s);
cout << count << endl;
}
void mycount()
{
sleep_for(1ms);
count++;
cout << count << endl;
}
};
void main()
{
foo obj;
while(1)
{
obj.func();
obj.mycount();
}
}
我也试过把mycount
放到另一个函数中,但是std::call_once
没有影响到任何东西,因为我在mycount
函数中使用了它,我希望不同的函数使用不同的get_id
。
1条答案
按热度按时间xxhby3vn1#
下面是一个使用lambda函数启动异步进程的例子,使用std::future来同步类的析构函数和后台线程(在这个例子中是计数)。