我正在運行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