从品牌网站建设到网络营销策划,从策略到执行的一站式服务
我告诉你思路,你自己去实现。
创新互联主要从事做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务南溪,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
建议你用“守护线程”的方式去做,这样做对于你一个小任务来说更合适。首先,你要建立一个队列,将所有下载任务放入队列。注意,这个队列必须是“线程安全”的,即两个线程不会抢到同一个任务。然后只开10个线程。这些线程会从队列中读取任务。当一个线程不能再从队列中读取任务时,也就是队列为空时,退出。等所有线程都退出后,你的程序就结束了。
还有一种方法,叫“线程池”,也就是你说的方法,稍微复杂一点:
指定一个变量,用来表示线程的数量。刚开始为0,每开一个线程+1。当一个线程完成任务退出后,这个变量-1。直到所有任务都完成后,不再产生新线程。
很简单,调用API函数CreateThread
但是用vb做多线程的关键不在于创建,而是在于线程的不稳定,其不稳定是由于vb6自身的控件(如按钮、文本框等)不是线程安全的,怎么用你程序就可能怎么挂,所以这些个玩样儿在多线程中统统不能用。
那么UI的实现也得用API实现。这样vb的多线程才相对要稳定。但是vb的可视化开发的优势又荡然无存。
其实这行代码和C_RunCompleted(image, Nothing)的效果类似,但在BackgroundWorker中解决了“线程安全”的问题。
你可以把多线程看成几个工人同时干活。如果大家都共用一份材料,然后我给它补一块,你给它割一块,他再把其它材料焊上去,岂不是乱套了?Invoke的作用就是用一个线程模型调用方法,让主线程先放一边,这样就不会乱套了,也就是“线程安全”。你试试直接改成上面的代码,运行时会引发跨线程异常
我们知道Hashtable 是线程安全的,可由多个读取器线程或一个写入线程使用。
它的特点是:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址.
HashMap 与Hashtable很相似,但HashMap 是非同步(unsynchronizded)和可以以null为关键码的.
我们知道在使用内存中的地址时是按照哪里有空闲的就使用哪里的。怎么可能一直由着我们输入的顺序给你开放地址呢?
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图