扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这个没法做到。原因
甘州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
1)当你将方法排入线程池队列后,此方法在有线程池线程变得可用时执行。
2)线程池中某个线程的可用与不可用,是由.net 后台决定,用户程序无法控制的
3)正如你观察到的:线程启动的时间不同,有快有慢,这恰恰说明线程池起作用了:线程池的调度试图让程序响应达到最佳。
Sub Main()
Dim thr As Thread
For Pi As Integer=0 To 4 //启用5线程
MulParams =Pi vbTab sFile vbTab dFile vbTab 1 vbTab DelN vbTab cr vbTab cg vbTab cb vbTab IndexI
GlobalParamas(pi)=MulParams .Split(vbTab)
thr=New Thread(AddressOf MyMulThreadCaller)
thr.Start() //启动多线程进程
Application.DoEvents
Next
End Sub
这个没法做到。原因
1)当你将方法排入线程池队列后,此方法在有线程池线程变得可用时执行。
2)线程池中某个线程的可用与不可用,是由.net 后台决定,用户程序无法控制的
3)正如你观察到的:线程启动的时间不同,有快有慢,这恰恰说明线程池起作用了:线程池的调度试图让程序响应达到最佳。
Sub Main() Dim thr As New Thread(AddressOf 循环) thr.Start("a") End Sub Sub 循环(a() As String) '这里随你干什么循环也行 For Each i As String In a MsgBox(i) Next End Sub
请参考csdn中的vbcon98.chm:
★ 单线程的部件与单元模型
Visual Basic 创建的所有部件都使用单元模型,无论该部件是单线程的还是多线程的。单线程的部件只有一个单元,该单元包含部件提供的所有对象。
这就意味着用 Visual Basic 创建的单线程的 DLL 可以安全地用于多线程的客户端。不过,性能与安全是一对矛盾,这种安全性损失了性能。除了当前的客户端线程之外,其它所有的客户端线程的调用都要等待被调度,就好象这些调用是进程外调用。请参阅“设计线程安全的 DLL”。
线程的所有权
多线程的进程内部件没有自己的线程。如“设计线程安全的 DLL”中所述,定义每个单元的线程都属于客户端。
与此相对的是,多线程的进程外部件可能有一个固定线程数目的线程池,或者为每个外部创建的对象设置一个线程。
★ 设计多线程的进程外部件
您可以利用单元模式进程化,建立多线程的进程外部部件。这种部件提供的对象可以运行在不同的执行线程上。
为了将对象指派到进程外部件中的线程,Visual Basic 提供了三种模型。可以在“工程属性”对话框中设置“通用”选项卡的“无用户界面执行”框,选择其中的一种模型。
线程指派模型 “无用户界面执行”的设置
单一的执行线程 选择“线程池”选项,指定线程数为一。
循环指派线程的线程池 选择“线程池”选项,并指定可用的线程数目。
每个在外部创建的对象有一个属于自己的线程 选择“每个对象的线程”选项。
单一的执行线程
当选择“无用户界面执行”时,单一的执行线程是缺省设置。使用该选项可以编译 Visual Basic 早期版本开发的部件,无需考虑线程。
如果使用“无用户界面执行”选项来重新编译部件,该服务器将不能再显示出消息框,也就无法获得管理员的干预。不过,这种消息可以被记录到 Windows NT 的事件日志(或另外选择的日志文件),请参阅“多线程部件的事件日志”。
循环的线程池
当客户端请求对象时,Visual Basic 使用在线程池的下一个线程上创建所需的对象。当线程到达线程池的尾端时,就从头开始。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流