[問題] 兩個thread同時讀寫一個檔案

看板C_and_CPP (C/C++)作者 (惑)時間16年前 (2009/06/20 00:01), 編輯推噓3(302)
留言5則, 4人參與, 最新討論串1/1
請教各位, 有兩個thread,一個是不斷的寫檔,另一個則是不斷的讀此檔。 應該要如何做,可以避免出錯呢? 有以下幾個問題與想法,想跟大家請教~ 1、分別開各自的file handle,如此讀/寫是否就會keep住自己的read/write pointer呢? 2、只開一個file handle,再用二個變數分別記住讀/寫的位置, 當要做fwrite與fread時,利用fseek跳到正確的位置。 3、FILE I/O是否會自己保護好? 還是也需要mutex的保護去預防兩個thread同時在讀寫同一檔案 4、若是開一個file handle與開兩個file handle都可行的話, 哪一種的效率較佳 5、以上皆不可行,需用其它方法 >"< 以上幾個問題,麻煩各位了,謝謝 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.198.135.180

06/20 00:34, , 1F
12看 file handler的結構 3一個只讀一個只寫應該沒有衝突
06/20 00:34, 1F

06/20 09:45, , 2F
CriticalSection?
06/20 09:45, 2F

06/20 10:15, , 3F
比較簡單的作法應該是3吧, 1 2寫不好發生錯誤機會很高吧
06/20 10:15, 3F

06/20 10:16, , 4F
4 的話感覺應該只是用不同的fd, 實際上根本沒有解決
06/20 10:16, 4F

06/20 12:10, , 5F
同步一下吧 可以利用waitForSingleObject
06/20 12:10, 5F
文章代碼(AID): #1AExPAjQ (C_and_CPP)
文章代碼(AID): #1AExPAjQ (C_and_CPP)