0

我正在运行一个有 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 不再运行

4

1 回答 1

1

线索可能在“观看文件夹中的图像”中。这听起来像是您依赖文件更改通知,而这些通知可能会被遗漏(更准确地说,其中一些可能会合并为一个摘要通知)。

于 2013-08-02T09:10:54.563 回答