Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net:一次打开多少线程是安全的?_Vb.net_Multithreading - Fatal编程技术网

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

vb.net:一次打开多少线程是安全的?,vb.net,multithreading,Vb.net,Multithreading,当我的应用程序等待结果时,我正在运行后台工作人员为我做一些处理。我目前一次只使用一个,但我想运行更多。多跑一点安全吗?我能跑多少?用户有多少RAM是重要的,还是更多的是控制线程运行时间的处理器 谢谢 我的代码: Private check_config_bw As BackgroundWorker = New BackgroundWorker check_config_bw.WorkerReportsProgress = True check_config_bw.WorkerSupportsCa

当我的应用程序等待结果时,我正在运行后台工作人员为我做一些处理。我目前一次只使用一个,但我想运行更多。多跑一点安全吗?我能跑多少?用户有多少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

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

您可以执行自己的性能测试并亲自查看。VisualStudio附带了CPU探查器工具,它可以非常有效地识别性能瓶颈(一直使用它)


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

您可以执行自己的性能测试并亲自查看。VisualStudio附带了CPU探查器工具,它可以非常有效地识别性能瓶颈(一直使用它)


您可以打开任意多个线程,但请始终注意系统资源。默认情况下,每个线程使用1MB堆栈空间。另外,拥有“太多”线程可能会导致过度的上下文切换,这意味着花在线程管理上的时间比实际处理上的时间要多。操作系统控制实际的线程(上下文切换、调度、线程优先级、线程数量等)。

您可以打开任意多个线程,但始终要注意系统资源。默认情况下,每个线程使用1MB堆栈空间。另外,拥有“太多”线程可能会导致过度的上下文切换,这意味着花在线程管理上的时间比实际处理上的时间要多。操作系统控制实际线程(上下文切换、调度、线程优先级、线程数量等)。

请参阅并回答您的问题。请参阅并回答您的问题。但我不知道用户将拥有多少内核。该应用程序将被出售给其他人,因此我无法像控制自己的应用程序那样控制用户环境。我从未见过CPU探查器工具。我必须调查一下。@user272815:您可以查询操作系统的内核数。请参阅:同时检查我的编辑,以了解2010年在哪里可以找到探查器。@user272815:这太不幸了。那么,请检查您的其他选项:@neolik感谢性能向导上的良好链接和信息。但我不知道用户将拥有多少内核。该应用程序将被出售给其他人,因此我无法像控制自己的应用程序那样控制用户环境。我从未见过CPU探查器工具。我必须调查一下。@user272815:您可以查询操作系统的内核数。请参阅:同时检查我的编辑,以了解2010年在哪里可以找到探查器。@user272815:这太不幸了。那么,请检查您的其他选项:@neolik感谢您提供有关性能向导的良好链接和信息。