带有windows8操作系统的i7处理器上的MultiThreading问题

时间:2013-08-02 07:15:33

标签: c++ multithreading windows-8 multicore

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

1 个答案:

答案 0 :(得分:1)

线索可能在“观看文件夹中的图像”。这听起来像是你依赖于文件更改通知,而且可能会错过这些通知(更准确地说,其中一些可能会折叠成一个摘要通知)。