音乐播放器优化:从CPU使用到功能拓展
1. 优化CPU使用
在音乐播放器运行过程中,你可能会注意到,当没有歌曲播放时,软件会占用100%的CPU资源。这是因为音乐引擎线程中存在无限循环,当歌曲暂停或没有歌曲可播放时,线程只会不断循环,不做其他操作。下面我们来解决这个问题。
1.1 条件变量的使用
我们的目标是让线程在无事可做时进入休眠状态,并且能够从主线程唤醒它。这正是条件变量的作用。我们将在引擎中添加一个条件变量。
首先,在 EventLoop 结构体中添加一个 condition_variable 字段:
struct EventLoop {
condition_variable: Arc<(Mutex<bool>, Condvar)>,
queue: Arc<SegQueue<Action>>,
playing: Arc<Mutex<bool>>,
}
条件变量通常与一个布尔值(封装在 Mutex 中)一起使用。我们需要重写 EventLoop 的构造函数来初始化这个新字段:
impl EventLoop {
fn new() -> Self {
EventLoop {
condition_v
超级会员免费看
订阅专栏 解锁全文
750

被折叠的 条评论
为什么被折叠?



