我正在运行2线程的应用程序。一个线程保存从相机抓取的图像,另一个线程处理该图像,这里的问题是,处理过程中的线程停止(停顿或阻塞无法获取它)在一些(每次运行时随机)小时后处理,但它在i3上使用windows7以及在使用windowsXp的双核处理器上工作良好。两个线程中都没有关键部分或锁定。请帮我解决这个问题。从线程2i7处理器与Windows8操作系统的多线程问题操作系统
代码:
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));
写日志后“回车跳过。”线程2没有更多的跑动
欢迎来到Stack Overflow。如果您可以分享您的代码,那么专家能够更好地为您提供帮助(最好是一个简单示例)。另外,详细说明你已经做了什么来调试问题。如果处理停留在一个线程上,是否尝试过使用调试器来确定问题所在? (或者其他的调试)? – selbie
项目运行的方式是, 线程1:从相机 抓取图像 将图像保存路径 //继续进行,直到停止掠 线程2: 检测运动在保存的图像 跳过两个图像,如果没有检测到 运动/ /继续,直到没有更多的图像。 Thread2停止处理我们无法调试,因为它发生在我们无法访问的客户机中 – venki
如果我们要帮助您,您将需要显示代码,因为您对该过程的解释有太多漏洞。例如,你说没有锁,那么图像如何在线程之间传输?当你说有2个线程时,真的只有2个线程永远不会完成,或者你是否定期启动一个新线程,并假设前一个线程已关闭。向我们展示代码可能会回答这些问题以及无疑会出现的其他问题。 – Nanhydrin