我正在运行一个有 2 个线程的应用程序。一个保存图像的线程从相机抓取图像,另一个线程处理该图像,这里的问题是,处理线程在处理过程中停止(停滞或阻塞无法获取)经过一些(每次运行时随机)小时,但它在带有 windows7 的 i3 以及带有 windowsXp 的双核处理器上运行良好。两个线程中都没有临界区或锁。请帮我解决这个问题。
来自线程2的代码:
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));
写入日志“Enter Skipping..”后,thread2 不再运行