当我的应用程序等待结果时,我正在运行后台工作人员为我做一些处理。我目前一次只使用一个,但我想要运行更多。运行更多是否安全?我可以跑多少?用户拥有多少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
答案 0 :(得分:2)
我记得在某个地方读取一个线程占用1-2MB内存+无论你在其中声明什么,CPU取决于你用它做什么。打开很多它是安全的,但只有x2个核心才有意义(再次看到这个模式经常使用)。
您可以执行自己的性能测试并亲自查看。 Visual Profiler工具包含在Visual Studio中,可以非常有效地识别性能瓶颈(一直使用它)。
答案 1 :(得分:2)
您可以根据需要打开任意数量的线程,但始终注意系统资源。默认情况下,每个线程使用1MB堆栈空间。同样具有“太多”线程可能导致过多的上下文切换,这意味着花在线程内务上的时间比实际处理花费的时间更多。 OS控制实际线程(上下文切换,调度,线程优先级,线程量子等)。