→ linotwo:while 的條件判斷裡的 fscanf(...) 沒有鎖起來 11/09 07:46
http://codepad.org/OwWHG4oe <---- Code
我的目的是想要以muti thread讀檔將檔案內一定格式的資料 (分成id 及數值) 讀出
然後我叫了兩個thread出來
因為幾乎整個thread裡在讀檔時用到的東西都是thread間需要共用的
所以一開始就用mutex 鎖起來
可是這樣執行時常常會有某一段變成 數值跟id存進的位子反了 (id存到struct裡的value)
(因為我把thread跑完以後的資料print出來一個一個檢查一遍)
就覺得很奇怪 剛好我在thread裡每從檔案裡讀完一筆資料就會提示一次做完
然後把已經讀取的次數加一
結果延著大筆資料print出來的結果算一算 數值跟id反了的位子剛好就是thread 1
讀完檔 換到thread2 讀檔完以後就反過來 我猜應該是在檔案指標讀的時候thread被切換
可是我mutex在thread的while裡第一行就lock起來了 結果還是沒辦法@@
想請問一下問題出在哪 感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.221.161