是否可以使用多线程程序来加速我的程序进程?
我的程序如下
1-生成一个随机数 2-由这个头号远程服务器查询 3-将结果存储在文本文件中
问题基本上是当我查询远程服务器时需要10秒钟 而不是等待这次我想生成100或1000数字并单独发送它们然后当结果出现时我会将它们保存在缓冲区中并稍后将它们保存到文本中有任何帮助或想法吗?
答案 0 :(得分:1)
我会考虑使用Microsoft的Reactive Framework(NuGet Rx-Main
)。
这将是您的代码:
Dim rnd = New Random()
Dim query = _
From i In Observable.Range(0, 1000) _
From n In Observable.Start(Function () rnd.Next()) _
From r in Observable.Start(Function (x) CallWebService(x)) _
Select r
File.WriteAllLines(filePath, _
String.Join(Environment.NewLine, query.ToEnumerable()))
所有在具有最大吞吐量的后台线程上运行。
完成!
答案 1 :(得分:0)
Module Module1
Sub main()
Randomize()
Dim r = New Random
Dim rLock = New Object
Dim results As New Concurrent.ConcurrentBag(Of Tuple(Of Integer, String))
Dim getRandom = New Func(Of Integer)(Function()
SyncLock rLock
Return r.Next(0, Integer.MaxValue)
End SyncLock
End Function)
' total number of loops
' v
System.Threading.Tasks.Parallel.For(0, 100, Sub(i)
Dim aRandom = getRandom()
'process the query
Dim output = "-server-response-" 'or whatever the outcome of processing
results.Add(New Tuple(Of Integer, String)(aRandom, output))
End Sub)
For Each itm In results
Console.WriteLine(itm.Item1 & vbTab & itm.Item2)
Next
End Sub
End Module