我正在嘗試編寫一個Teamcenter ITK(基於c)的程序,該程序將作爲從主線程調用的不同線程運行。主線程從UI上的操作被調用。由於子線程需要花費很多時間才能完成,因此如果我不創建子線程並將代碼放入主線程,UI將凍結最多10分鐘,這是不可接受的。現在,主線程和子線程都需要共享由主線程完成的身份驗證,因爲我使用的是SSO。他們還需要連接到數據庫。最後,主線程不應該等待子線程完成,否則具有子線程的全部目的將被打敗。調用子線程的代碼是Teamcenter中的多線程ITK
handle = (HANDLE) _beginthread (submitToPublishTibcoWf, 0, &input); // create thread
do
{
sprintf (message, "Waiting %d time for 1000 milliseconds since threadReady is %d\n", i++, threadReady);
log_msg (message);
WaitForSingleObject(handle, 1000);
}
while (!threadReady);
sprintf (message, "Wait for thread to be ready over after %d tries since threadReady is %d\n", i, threadReady);
log_msg (message);
log_msg ("Main thread about to exit now");
我設置threadReady = 1(全局變量)每當我關於在子線程僅需8分鐘,運行時執行的代碼段。
現在的問題是,主線程退出後,子線程表現得更加糟糕。我得到這個錯誤:
週五5月25日11:34:46 2012:主線程即將退出 此應用程序已請求運行時以不尋常的方式終止它。 有關更多信息,請聯繫應用程序的支持團隊。
大多數子線程執行但有時它只是崩潰到最後。
任何幫助,非常感謝。
有時我在調試時出現此錯誤:tcserver.exe中0x580d8390未處理的異常:0xC0000005:訪問衝突讀取位置0xffffffec。 – Yogesh