在使用alsa-lib進(jìn)行語音對講的開發(fā)時歼指,總是在關(guān)閉的時候出現(xiàn)以下錯誤:
'''Assertion 'pa_atomic_load(&(p)->_ref) > 0' failed at pulsecore/pstream.c'''
造成這個的錯誤的原因是播放線程有一個sem信號量等待篙耗,有時候結(jié)束時的沒有播放的數(shù)據(jù)宋距,一直在這個地方等待炫欺,播放線程無法退出蒿往。造成了下次播放時數(shù)據(jù)錯誤鸣峭,引起崩潰渴肉。
解決的辦法是在結(jié)束的函數(shù)中通知信號量幽七,使播放線程繼續(xù)運(yùn)行竟闪。這樣就能安全的退出了离福。