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
文件大小:
评论区