我正在运行一个包含2个线程的应用程序。一个线程保存图像抓取来自相机和另一个线程处理该图像,这里的问题是,处理线程停止(停止或阻止无法得到它)在处理过程中的一些(每次运行时随机)小时,但它在带有windows7的i3和带有windowsXp的双核处理器上工作正常。两个线程中都没有关键部分或锁定。请帮我解决这个问题。
来自thread2的代码:
fn_Waitforfiles(); // while loop waits until the 4 images saved in watch folder if not it will return at count of 50
CString strLog = "";
strLog.Format("Entering Skipping..");
for(int d = 1; d <= m_iInterLeave; d++)
{
m_ifileCount++;
m_strcurFilePath.Format("%s\\%lu.jpeg", m_strToProcessDir, m_ifileCount);
if(PathFileExists(m_strcurFilePath))
::DeleteFile(m_strcurFilePath);
else
{
m_ifileCount--;
m_strcurFilePath.Format("%s\\%lu.jpeg", m_strToProcessDir, m_ifileCount);
}
if(d == m_iInterLeave)
{
m_ifileCount++;
m_strcurFilePath.Format("%s\\%lu.jpeg", m_strToProcessDir, m_ifileCount);
}
}
strLog = "";
strLog.Format("Skipped %d images on Interleaving..", m_iInterLeave);
MSSLOGGER::WriteLog(_T(strLog));
写入日志“输入跳过...”后,thread2不再运行
答案 0 :(得分:1)
线索可能在“观看文件夹中的图像”。这听起来像是你依赖于文件更改通知,而且可能会错过这些通知(更准确地说,其中一些可能会折叠成一个摘要通知)。