在我的main()
函數中,我呼籲pthread_create
創建一個新線程。我傳入文本文件的名稱,然後線程打開文本文件,計算行數,然後將該數字返回到main()
,其中我將整數totalCount +=
設置爲返回的數字。爲什麼使用pthread時我的計數線程不能正常工作?
我知道線程函數能正常工作,因爲我用另一段代碼來計算文本文件中的行數。當我使用循環不止一次呼叫pthread_create
時,問題就出現了。我從計數一個文件得到的totalCount
是準確的,但是當我打開兩個或多個文件時,totalCount
在main()
中是錯誤的。
在我的程序中出現了什麼問題導致了這種情況?這是我的線程函數中的問題嗎?我的pthread_join
?我知道這個問題在沒有代碼的情況下可能非常模糊,但是根據這種描述,任何想法都可以?
「我知道這個問題可能是非常模糊的沒有代碼,但任何想法都給予了這種描述?」確實不明確。似乎你應該發佈代碼? – Corbin
您可能會遇到競爭狀況,或者您沒有正確保護您的共享資源。如果沒有看到您的代碼,我不能告訴您問題是什麼。 – OmnipotentEntity
你說你正在創建多個線程?你有可能用每個新線程覆蓋pthread_t,從而只加入* last *之一。順便說一句,有些代碼會使這個* LOT *更容易。 – WhozCraig