gpt4 book ai didi

C++11 "correct"延迟执行方式

转载 作者:行者123 更新时间:2023-11-30 02:57:57 26 4
gpt4 key购买 nike

这是在 C++11 中延迟执行的“干净”方式吗?还是有一种“更清洁”的方式?

#include <iostream>
#include <boost/thread.hpp>

int main(int argc, char* argv[]) {
boost::thread t([] () { boost::this_thread::sleep(boost::posix_time::milliseconds(1000)); std::cout << "rawr!" << std::endl; } );

t.join();
}

产生一个新线程并执行 sleep() 似乎过于繁重?

最佳答案

理想情况下,如果作业相当短,您应该使用基于事件的系统,您可以在其中插入具有特定时间延迟的作业,然后它们会被执行。真的不需要线程,你可以在主线程中做所有事情。

你的主循环看起来有点像这样:

int main() {
setup();

while (true) {
handleEvents();
doYourOwnStuff();
usleep(nextEvent.firingTime - currentTime); // Wait until the next event is triggered
}
}

当然,如果你已经有一个系统,那么这样的系统就不容易实现了。许多流行的 UI 框架(Cocoa、Qt、Windows)都支持这种设计,因为它非常强大且简单。

关于C++11 "correct"延迟执行方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14106857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com