網址代碼:http://pastebin.com/d62UWUtc異步線程問題(使用pthread)。對不起,但更具體的身體
有近320行。帶有評論,解釋每個功能和變量。請先看看它。
現在,如果您嘗試編譯,那麼您注意到,指定爲「路徑」的前1-2分鐘目錄爲空,因爲創建的每個線程文件都幾乎立即被刪除。 但是,如果您等待2-3分鐘,則可以看到該功能,即刪除文件只是遲到而不刪除某些文件。你也可以從程序的日誌中看到同樣的東西。
問題是:我可以使程序這樣的方式,它刪除任何文件,創建後,適當檢查文件?
網址代碼:http://pastebin.com/d62UWUtc異步線程問題(使用pthread)。對不起,但更具體的身體
有近320行。帶有評論,解釋每個功能和變量。請先看看它。
現在,如果您嘗試編譯,那麼您注意到,指定爲「路徑」的前1-2分鐘目錄爲空,因爲創建的每個線程文件都幾乎立即被刪除。 但是,如果您等待2-3分鐘,則可以看到該功能,即刪除文件只是遲到而不刪除某些文件。你也可以從程序的日誌中看到同樣的東西。
問題是:我可以使程序這樣的方式,它刪除任何文件,創建後,適當檢查文件?
答案很簡單:只需同步你的線程(障礙,鎖定......任何你想要的),這樣你的清理線程就可以等待資源被釋放。
但嚴重:你爲什麼在這種情況下使用文件?任何涉及小型「臨時文件」的東西本身都是可疑的,特別是在線程應用程序中。如果你真的必須使用它們,至少使用tmpfile()。但從我從源頭上看到,你根本不需要它們。您可以輕鬆地將它們替換爲線程安全共享內存。
em ..重點是,線程必須運行異步並以某種方式通知他們完成。另外,我需要函數的返回值,它是在線程中運行的。 – cheshie 2011-04-04 14:50:02
從tmpfile的手冊頁:該文件將被關閉時自動刪除...所以,當功能打開tmpfile,並在那裏它的數據,它會被關閉刪除,是啊?但是,我需要檢查文件的內容。所以,功能,打開的文件必須以某種方式傳遞文件的描述符等...真的,在這種情況下,我不明白會有什麼區別?做清理tmp文件的功能是否有足夠的時間去除文件? – cheshie 2011-04-04 14:54:42
你的線程完全可以通知他們已經完成而不使用任何文件。例如,他們可以使用他們的返回值。 – BatchyX 2011-04-04 18:43:21
另外,我的問題是,清理功能只是沒有足夠的時間來刪除文件或算法中存在一個錯誤? – cheshie 2011-04-04 14:55:51