vb.net:一次打开多少线程是安全的?

时间:2013-12-18 14:09:42

标签: vb.net multithreading

当我的应用程序等待结果时,我正在运行后台工作人员为我做一些处理。我目前一次只使用一个,但我想要运行更多。运行更多是否安全?我可以跑多少?用户拥有多少RAM或控制线程运行时间的处理器更重要吗?

感谢

我的代码:

Private check_config_bw As BackgroundWorker = New BackgroundWorker
check_config_bw.WorkerReportsProgress = True
check_config_bw.WorkerSupportsCancellation = True
AddHandler check_config_bw.DoWork, AddressOf check_config_bw_DoWork
AddHandler check_config_bw.ProgressChanged, AddressOf check_config_bw_ProgressChanged
AddHandler check_config_bw.RunWorkerCompleted, AddressOf check_config_bw_RunWorkerCompleted

If Not check_config_bw.IsBusy = True Then
     check_config_bw.RunWorkerAsync()
End If

2 个答案:

答案 0 :(得分:2)

我记得在某个地方读取一个线程占用1-2MB内存+无论你在其中声明什么,CPU取决于你用它做什么。打开很多它是安全的,但只有x2个核心才有意义(再次看到这个模式经常使用)。

您可以执行自己的性能测试并亲自查看。 Visual Profiler工具包含在Visual Studio中,可以非常有效地识别性能瓶颈(一直使用它)。

enter image description here

答案 1 :(得分:2)

您可以根据需要打开任意数量的线程,但始终注意系统资源。默认情况下,每个线程使用1MB堆栈空间。同样具有“太多”线程可能导致过多的上下文切换,这意味着花在线程内务上的时间比实际处理花费的时间更多。 OS控制实际线程(上下文切换,调度,线程优先级,线程量子等)。