gpt4 book ai didi

C++ 我可以使用什么代替 sleep() 函数?

转载 作者:IT王子 更新时间:2023-10-29 00:32:17 29 4
gpt4 key购买 nike

我正在构建 scrobbler,我希望我的程序在歌曲更改后等待 10 秒,然后再进行 scrobbler。我一直在使用 sleep ,但我意识到如果歌曲在这 10 秒内发生变化,程序会提交旧歌曲并获得新歌曲。我想如果我改变歌曲,代码重新开始。

我正在使用 Music Player Daemon (MPD) 和 libmpd 来获取歌曲的标签。

注意:程序在Unix下。

最佳答案

这在很大程度上取决于您的程序如何工作,但原则上,最简单的方法是继续使用 sleep 并检查用户是否在发送数据之前更改了歌曲(在 sleep 完成后回来)。因此,目标不是“努力睡得更好”,而是“在发送前检查您发送的数据是否真的有效”。

另一种可能性是等待 epoll,使用 sleep 超时或更好的 timerfd,并通过 eventfd 通知歌曲更改。这样做的好处是,如果您无论如何都需要可靠的线程间通信和准备就绪通知,那么它是“免费的”,而您很可能会这样做(显然您必须至少有一个额外的 GUI 线程,否则用户将无法更改歌曲当你阻塞时)。

关于C++ 我可以使用什么代替 sleep() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5754239/

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