void IDecode::Update(XData pkt) {
if (pkt.isAudio != isAudio) {
return;
}
XLOGI("更新数据%d %d", pkt.data, pkt.size);
while (!isExit) {
packsMutex.lock();
//阻塞
if (packs.size() < maxList) {
//生产者
packs.push_back(pkt);
packsMutex.unlock();
break;
}
// XLOGI("线程阻塞了吗%d %d", pkt.data, pkt.size);
packsMutex.unlock();
}
}
这个方法运行在一个线程中,不断地被调用。我实际测了一下packs.size() < maxList
的值是false的时候,线程就阻塞,该方法不再被调用。false情况下,也是线程加锁解锁的过程,我看不出来哪里阻塞了求解答。