作者benbchung (距離...是妳經過我的時候)
看板C_Sharp
標題[問題] 請問多執行緒這樣寫是否有問題?
時間Tue May 10 23:44:31 2016
我使用VC C# 2010,Framework 3.5來編輯多執行緒程式。
我不曉得是否是我觀念有問題,程式偶而會出錯(執行緒的buffer偶發就null)。
想請教一下板上的前輩。
問題:
我建立了30個object,每個object裡面開一個thread(也就是有30個thread)
並且依序start這30個thread(幾乎同時開啟)。
每個thread function裡面我會再建立另一個區域的object
(假設物件名稱為A,30個thread就有30個物件A)。
這30個物件A我是用來計算大buffer的影像處理,並且我確定各物件A的buffer沒有共用。
但偶發就是會出現物件A的buffer在計算中突然變成null的情況
(但程式段落還沒到清除此buffer的地方,還很正常在使用)。
是否是會因為太多執行緒創建同一個私有的class物件,導致資料互相影響?
--
推 godtomanne:alt+f4沒有用? 9/10 00:18
→ alt:去你媽的 9/10 00:24
噓 F4:你才沒用 9/10 00:25
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.126.14.155
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1462895075.A.8BC.html
→ Caesar08: 如果你用thread才有問題,那就是你code有寫錯 05/10 23:47
→ Caesar08: 然後根據我的經驗,你如果不把code放上來,用說的根本沒 05/10 23:47
→ Caesar08: 辦法幫你debug 05/10 23:48
好的,我會貼上來請教板上的前輩
推 TameFoxx: 應該是你的物件A去跟大Buffer拿東西的時候 05/11 00:34
→ TameFoxx: 不是複製一個副本 05/11 00:35
→ TameFoxx: 看起來突然變null就是因為他在別的地方被Dispose? 05/11 00:36
→ TameFoxx: 不過Dispose後好像不會顯示null.... 有點不確定 05/11 00:36
謝謝,我再多確認一下
→ Litfal: >>這30個物件A我是用來計算大buffer的影像處理 05/11 09:06
→ Litfal: 大buffer > A 你是怎麼做的? 05/11 09:07
→ Litfal: 順便提醒一下,你這樣效率可能反而會差... 05/11 09:07
謝謝,我重新修改只有一個執行緒做計算了
推 johnpage: 工作內容沒分配 05/11 11:54
請問工作內容沒分配是什麼意思?小弟程式剛入門,很多不懂的地方
※ 編輯: benbchung (59.126.14.155), 05/11/2016 20:38:52