本帖最后由 zhifu3158 于 2017-3-20 07:57 编辑
解决:软件多线程运行时遇到【内存不断升高】甚至爆表!
因为本人是个小白,多线程经常用,但是线程池并没有用过,(一听到线程池,总感觉高大上)
但是近期写彩票软件的时候发现,多线程长期操作会导致内容不断的升高直至报错,遂想起了线程池,完善后发现不是一般的叼 啊!!!
先简单的说下多线程和线程池的区别:
1、多线程每次启动的时候系统都要分配一定的资源出来(主要占的就是内存),而不断的启动线程、启动线程、启动线程 循环的启动线程,就造成了系统资源极大的浪费,甚至不释放的情况,继续下去内存就OVER了!
2、线程池则完美的解决了这个问题,线程池的原理就是事先申请好指定数量的线程所使用的资源,而且这些资源是不断的重复利用的!可利用任务管理器看到程序的线程数量的变化(在使用普通的多线程时:线程数会根据软件启动的线程数量增加,循环完了之后线程数量也就减少了,但是内存资源不减少,再启动线程内存继续飙升! 而在使用【线程池】的时候:线程数一直保持线程池中的数量,无论你是否启动多线程进行运算,线程数量都不会变化,同时内存也不会有多大的变化,更不会不断的飙升!)
也许我的表达能力不足,反正大家知道在启用多线程的时候尽量使用线程池可以保证内存不会飙升就行了!
这里说的启动多线程是指循环启动‘同一个子程序’线程:
- .版本 2
- .计次循环首 (1000, c)
- 启动线程(&线程操作,c)
- .计次循环尾 ()
复制代码
如果是上面这样的话,建议使用线程池!它真的很吊!!!
奉上一个超级简单的线程池操作例程,相信新手一看就会!
简单的线程池操作例程.zip
(168.63 KB, 下载次数: 810)
|