作者benbchung (距离...是你经过我的时候)
看板C_Sharp
标题Re: [问题] 请问多执行绪这样写是否有问题?
时间Wed May 11 20:34:28 2016
我重新修改了一下程式,改成使用单一执行绪计算。
仍然是一样的异常状况。
我程式写法大致如下(省略部分段落)
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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1462970072.A.2E8.html
※ 编辑: benbchung (59.126.14.155), 05/11/2016 20:39:50
1F:→ Litfal: 你这个MultiProcess应该要试着重用 05/11 21:51
2F:→ Litfal: 或是直接使用原始那一份 tempProcessImage的内容,虽然我 05/11 21:59
3F:→ Litfal: 没看出哪里用到XDDD 05/11 21:59
4F:→ benbchung: 请问MutiProcess试着重用是什麽意思?重新宣告吗? 05/11 23:34
5F:→ Litfal: 当一个物件占用资源时,就应该试着重新使用他,而不是用 05/14 10:47
6F:→ Litfal: 完就丢,然後new新的。可以简单地重新使用,或是用Pool的 05/14 10:47
7F:→ Litfal: 概念去管理。否则每次都调用与释放资源,不只效能差,对记 05/14 10:48
8F:→ Litfal: 体也有不良影响。 05/14 10:48
9F:→ benbchung: 谢谢,收获很多! 05/17 22:17
10F:→ VVll: 看起来是把MainImage中的每个档案丢到DefectFind做影像处理 05/21 03:56
11F:→ VVll: 但看起来MutiProcessㄧ份就好了 不需要产生跟MainImage相同 05/21 03:57
12F:→ VVll: 的物件数目 因为你是单绪 且做完工作就重建ㄧ次 05/21 03:58
13F:→ VVll: 另外你的30 应该共用 Global.MaxThreadLength这个值 05/21 04:00
14F:→ VVll: 另外你说Buffer会出错的情况 num是否都不同 05/21 04:06
15F:推 new1011: 如果都确认变数独立,就要确认是否底层方法执行绪安全 05/21 09:38
16F:→ disabledman: 看来是memory leak问题 06/02 21:13
17F:→ psliurt: 好奇问第一个图的DefectFind[ggg]为什麽要立刻设定为null 07/07 23:33