我希望在几毫秒之后正确使用chrono库来配置我的类来调用方法。
#include <iostream>
#include <chrono>
#include <ctime>
Class House
{
private:
//...
public:
House() {};
~House() {};
void method1() { std::cout << "method1 called" << std::endl; };
void method2() { std::cout << "method2 called" << std::endl; };
void method3() { std::cout << "method3 called" << std::endl; };
};
int main
{
House h;
//For the object 'h', I need to call method1() after 100ms
// ???
//For the object 'h', I need to call method2() after 200ms
// ???
//For the object 'h', I need to call method3() after 300ms
// ???
return 0;
}
任何想法如何做到这一点?
答案 0 :(得分:2)
这是我阅读/学习的一本书的摘录,因为我刚刚进入C ++。 (我在3个月前开始,但在此之前我练习了Java和Python。)这解释了如何做你想做的事情以及展示的例子。我本可以用自己的话来解释它;但是我觉得好像这会撞到头上的钉子:
5.3.4.1等待活动
有时,线程需要等待某种外部事件,例如完成任务的另一个线程或已经过去的一定时间。最简单的“事件”就是时间流逝。考虑:
auto t0 = high_resolution_clock::now(); this_thread::sleep_for(milliseconds{20}); auto t1 = high_resolution_clock::now(); cout << duration_cast<nanoseconds>(t1 - t0).count() << " nanoseconds passed\n";
请注意,我甚至不必启动线程;默认情况下,this_thread引用唯一的线程(第42.2.6节)。我使用duration_cast将时钟的单位调整到我想要的纳秒。在尝试任何比这更复杂的事情之前,请参见§5.4.1和§35.2。时间设施位于
<chrono>
。- Bjarne Stroustrup的第4版C ++编程语言
我觉得使用这种方法有助于完成你想要做的事情:一个接一个地完成任务。查看<chrono>
。我找到这个答案是因为我正在读一本书,这不是我的作品,而是来自一本书。如果您打算同时运行许多任务,则需要创建线程,如果它们碰巧共享资源,您可能需要锁定或只使用unique_lock
/ lock_guard
。我更喜欢unique_lock
。