扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
不管单线程 还是多线程,都是CPU执行,而 CPU一个核只能执行一个线程。
创新互联是专业的乐清网站建设公司,乐清接单;提供网站设计、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行乐清网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
也就是说,如果电脑是多核CPU可能多线程快, 如果是单核,那么就是单线程快
这里的快事 CPU满负荷运行, 如要是处理网络任务 ,需要延时等待 ,多线程跟好
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
多线程并不一定就可以缩短时间,具体要看你上面的“过程”是否调用数据库完成。如果调用了数据库,可以考虑用存储过程替代“过程”。另外看看“过程”里是否反复打开和关闭了数据库连接,如果是,这才是真正的耗时动作。如果没调用数据库,可以考虑使用Parallel类(.net4以后)里面的函数,使多个任务在多核CPU上并行运行,缩短时间。
例子1:
Dim result As ParallelLoopResult = Parallel.[For](0, 10, Function(i)
Console.WriteLine("{0}, task: {1} , thread: {2}", i, Task.CurrentId, Thread.CurrentThread.ManagedThreadId)
Thread.Sleep(10)
End Function)
Console.WriteLine(result.IsCompleted)
例子2:
Parallel.For(Of String)(0, 20,
Function()
Console.WriteLine("init thread {0}, task {1}", Thread.CurrentThread.ManagedThreadId, Task.CurrentId)
Return String.Format("t: {0}", Thread.CurrentThread.ManagedThreadId)
End Function,
Function(i, pls, str)
Console.WriteLine("body i {0} str1 {1} thread {2} task {3}", i, str, Thread.CurrentThread.ManagedThreadId, Task.CurrentId)
Return String.Format("i {0}", i)
End Function,
Function(str1)
Console.WriteLine("finally {0}", str1)
End Function)
Timer 是在 主线程里执行的,Thread 是在自己的线程中执行的,多核心的CPU使用线程能提高处理能力。回到你的问题,主线程如果卡死,timer就会失去响应,很正常的。请使用System.Timers.Timer类吧。请参考一下:
题主是否想询问“vbnet同时执行多个任务怎么实现”?多线程操作。vbnet同时执行多个任务通过多线程操作实现,Visual Basic.net,属于计算机软件领域,是计算机中实现网络功能的编程语言。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流