|
发表于 2016-3-28 14:49:55
|
显示全部楼层
内蒙古自治区包头市
@正则表达式
你的代码里存在如下几个问题:
1.在"创建线程"中,你没有分清最后一个参数线程ID和返回值线程句柄之间的关系,而是使用了1个变量统统代替.
2.在"计算"子程序中,你在子程序运行结束时,多余的使用了"销毁线程".(线程子程序在运行结束时会自动释放,强制的释放会造成句柄和资源泄漏,而且销毁后,下面的代码就不会再执行.)
3.在线程句柄不再使用时,没有关闭句柄,造成了句柄泄漏.
如下图:分别为运行30秒和2分钟的截图.
运行30秒截图
运行2分钟截图
4.代码写法上的隐藏BUG,等级:严重.
在:子程序"分配线程"中, - <font color="RoyalBlue"><font color="Black"><font size="4"><b></b></font></font></font><font color="RoyalBlue"><font color="Black"><font size="4"><b><font color="RoyalBlue"><font color="Black"><font size="4"><b>临时句柄=</b></font></font></font>创建线程 (0, 0, &计算, 临时句柄, 0, 临时句柄)</b></font></font></font>
复制代码 这一句代码中存在隐藏BUG, 每次传递给线程的句柄都是上一次创建的线程的句柄,而不是本次创建的线程的句柄,根据调试输出可以看到,第一次在线程子程序"计算"中得到的参数实际上为0;(同时上述代码还存在"1"中的问题.)
在调用命令时,返回值是在命令运行成功后才得出的,所以不能假设上面这句的意思是先创建线程,然后把句柄当做参数传递给线程.
综上所述,该例程仍需要学习和修改,不予加精.
参考.rar
(33.49 KB, 下载次数: 44)
|
评分
-
查看全部评分
|