代码如下:
while(true)
{
Hobject checkImage;
m_imageBuffer.pop_back(&checkedImage);
OutPutDebugString(_T("获取图片正常");
...
//添加图片处理相关代码
}
调试运行的时候,只输出两次"获取图片正常",然后即使在循环中打断点,也进不去,这是为什么呢?
分析结果:
从图片队列取图片时为判断队列是否为空,添加判断后,程序正常运行。
这个地方是因为,假如当前队列为空,却执行了pot_back操作,线程互斥便出了问题,取图线程一直占用m_imageBuffer队列,导致采图线程中不能将图片塞入队列。
注意事项:
1.首先大概定位: 调试代码时用排除法,分别注释掉不同代码模块,调试运行定位错误位置。
2.而后单步调试,精确定位错误位置。