C++中的时控函数集锦
C++里的时控函数真是个宝藏,用得顺手的话,多定时操作、线程控制都能搞定。
从std::chrono库开始讲吧,这套东西在 C++11 之后挺常用了。像std::this_thread::sleep_for(),你传个std::chrono::seconds(3),线程就老老实实等 3 秒。还有sleep_until(),指定个未来的时间点,也挺方便。
早期 C 风格的time()和sleep()也有,但不推荐了,太老了,而且线程不安全。你真在意精度的话,std::chrono::high_resolution_clock是个不错的选择,测函数耗时实用。
有时候你还得搞点异步任务,比如配合std::async做延迟执行。写法不复杂,任务一丢、wait_for一挂,定时就搞定了。
如果你在 Linux 上开发,POSIX 那套sleep()、alarm()也能用,简单事儿交给它们还蛮省事。
多线程场景里,std::condition_variable配合unique_lock能搞定线程间的等待和通知,用得好能少多 bug。
Boost 那边也挺丰富的,boost::asio::deadline_timer和timer支持异步操作,搞高性能服务还是比较吃香的。
另外,如果你是在写服务端或界面程序,像Qt或libevent里的事件循环也能搞定定时任务,响应也快,代码也清爽。
,选工具得看场景,简单用sleep_for,复杂上Boost或者async。别死磕某一个,灵活组合才舒服。
文件大小:1.67KB
评论区