Q: 为什么需要互斥锁?多线程并发访问共享资源会导致数据竞争可能导致数据损坏或未定义行为确保入队/出队操作的原子性防止操作被其他线程中断Q: 为什么使用条件变量?替代自旋等待,降低CPU使用率线程可以进入休眠状态等待通知精确的线程通知避免不必要的线程唤醒Q: 如何处理队列满/空状态?1、队列满 生产者线程状态变化: 运行态 -> 阻塞态(队列满) -> 就绪态(被唤醒) -> 运行态 1. [运行] 生产者尝试写入数据 2. [检查] 发现队列已满 3. [阻塞] 调用wait进入阻塞状态 4. [等待] 等待消费者消费并唤醒 5. [恢复] 被唤醒后继续执行 2、队列空 ...