Re: [問題] list iterator not incrementable

看板C_and_CPP (C/C++)作者 (累人啊....)時間16年前 (2010/04/26 22:19), 編輯推噓3(3014)
留言17則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《tyc5116 (累人啊....)》之銘言: : 如題,我的程式在跑的時候會不定時跑出這個錯誤 : (也就是說有時候會出來,有時候則不會) : google上查到的資料也不太懂,其中有一個網頁是這樣的 : http://zh-tw.how-to.mobi/index.php?id=196976 : 裡面的其中一句是說 : 裡面的例子是,可能在同一個loop的時候遞增兩次 : 但是另一個網頁http://www.programmer-club.com.tw/ShowSameTitleN/evc/2855.html : 這個的原因我不是看的很懂,可以麻煩其它版友說明一下嗎 : 以及,除了這兩個原因以外,發生這樣的錯誤還有其它可能嗎? : 以上,麻煩有經驗的大大們回答,謝謝 : ◆ From: 163.18.48.28 : → mmmaaatttttt:你可以先把程式碼貼上來再問…… 04/26 17:50 : → tyc5116:我的程式有三個Thread在跑,我還不知道可能是哪裡有錯 04/26 19:38 : → tyc5116:所以我也不知道該貼哪一段程式碼出來....@@ 04/26 19:38 : → akasan:你可以描述一下你的thread對list作了什麼事 04/26 21:43 大致上就是有數個list串列,啟動三個thread,這三個thread都會去動到list的資料 會對其新增以及刪除裡面的元件,而且頻率很高,大致上就是這樣 剩下我也不知道該怎麼去說明了,如果我想到方法的話再貼出來 目前是在猜可能和上面第二個網頁所說的可能有點關聯 可以麻煩解釋一下嗎..謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.18.48.28

04/26 22:23, , 1F
STL 容器沒有對 thread-safe 做保證,平行對 STL 容器
04/26 22:23, 1F

04/26 22:23, , 2F
做寫入動作可能造成一些問題。
04/26 22:23, 2F

04/26 22:26, , 3F
Effective STL: Item 12
04/26 22:26, 3F

04/27 01:15, , 4F
不是很懂,是指兩個thread同時對它做寫入動作會出問題的意
04/27 01:15, 4F

04/27 01:15, , 5F
思嗎??
04/27 01:15, 5F

04/27 01:17, , 6F
不保證就是可能會有問題也可能不會囉 所以結果不能預期
04/27 01:17, 6F

04/27 01:40, , 7F
所以這個部份我還是要用一般的list架構實作才能解決這問題
04/27 01:40, 7F

04/27 01:40, , 8F
囉??以及,那個第二個網頁為什麼會錯我還是不懂....@@
04/27 01:40, 8F

04/27 03:50, , 9F
我沒看網頁,但如果你兩個 thread 對同一個 list 做
04/27 03:50, 9F

04/27 03:50, , 10F
insert / erase 等修改動作,沒做 mutex 就可能有問題。
04/27 03:50, 10F

04/27 03:50, , 11F
當然某些環境會特別幫你保證這個是 thread-safe。
04/27 03:50, 11F

04/27 03:51, , 12F
按標準來說是要自行保證,因為標準規格書裡 thread 這個字
04/27 03:51, 12F

04/27 03:51, , 13F
完全沒出現過,你要自己做 lock / unlock。
04/27 03:51, 13F

04/27 04:01, , 14F
自己做個spin lock吧, 超簡單的!
04/27 04:01, 14F

04/27 10:19, , 15F
謝謝大家...但我沒學過你們所說的那些吶
04/27 10:19, 15F

04/27 10:20, , 16F
有哪裡可以看相關資料嗎?(我目前有侯捷STL那本...)
04/27 10:20, 16F

04/27 11:54, , 17F
OS恐龍本有 0.0
04/27 11:54, 17F
文章代碼(AID): #1BrQ3e63 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BrQ3e63 (C_and_CPP)