看板 C_Sharp 關於我們 聯絡資訊
我重新修改了一下程式,改成使用單一執行緒計算。 仍然是一樣的異常狀況。 我程式寫法大致如下(省略部分段落) 1. 用一個主執行緒重複乎叫MutiProcess這個類別的物件做計算(如下圖) http://imgur.com/kXiKOrR 2. MutiProcess這個類別再創建ProcessClass 這個類別的物件(名稱ImageProcess,如下圖) http://imgur.com/v48Y3KA 主執行緒while迴圈重複跑數百數千次之後(頻率不一定),會出現異常。 幾乎都是ProcessClass裡面的私有的影像BUFFER被清空(該buffer上一行還很正常使用) 或是ProcessClass裡面的私有影像buffer在該某一function中突然變成其他function 才會做的處理狀況(異常時我用VC的外掛工具看Buffer內容發現的)。 因為ProcessClass這個類太龐大了,暫時不貼。 想先請板上的前輩幫我看一下,我這樣一直new 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.1462970072.A.2E8.html ※ 編輯: benbchung (59.126.14.155), 05/11/2016 20:39:50
Litfal: 你這個MultiProcess應該要試著重用 05/11 21:51
Litfal: 或是直接使用原始那一份 tempProcessImage的內容,雖然我 05/11 21:59
Litfal: 沒看出哪裡用到XDDD 05/11 21:59
benbchung: 請問MutiProcess試著重用是什麼意思?重新宣告嗎? 05/11 23:34
Litfal: 當一個物件占用資源時,就應該試著重新使用他,而不是用 05/14 10:47
Litfal: 完就丟,然後new新的。可以簡單地重新使用,或是用Pool的 05/14 10:47
Litfal: 概念去管理。否則每次都調用與釋放資源,不只效能差,對記 05/14 10:48
Litfal: 體也有不良影響。 05/14 10:48
benbchung: 謝謝,收穫很多! 05/17 22:17
VVll: 看起來是把MainImage中的每個檔案丟到DefectFind做影像處理 05/21 03:56
VVll: 但看起來MutiProcessㄧ份就好了 不需要產生跟MainImage相同 05/21 03:57
VVll: 的物件數目 因為你是單緒 且做完工作就重建ㄧ次 05/21 03:58
VVll: 另外你的30 應該共用 Global.MaxThreadLength這個值 05/21 04:00
VVll: 另外你說Buffer會出錯的情況 num是否都不同 05/21 04:06
new1011: 如果都確認變數獨立,就要確認是否底層方法執行緒安全 05/21 09:38
disabledman: 看來是memory leak問題 06/02 21:13
psliurt: 好奇問第一個圖的DefectFind[ggg]為什麼要立刻設定為null 07/07 23:33