这两天在给新的AudioEngine增加cache方法解决第一次播音效的卡顿问题。ios上的功能完成了,调试的时候发现经常有子线程未被唤醒的情况。看了下源码发现bug一枚。
版本3.5
工程目录/cocos2d/cocos/audio/apple/AudioEngine-inl.mm大概81行左右
调用_sleepCondition.notify_all()前没有上锁,导致子线程threadFunc方法错误的没响应到某次notify
修正方法:在_sleepCondition.notify_all()前面加一句std::unique_lockstd::mutex lk(_sleepMutex)