Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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
C#,关于线程池的问题_C#_Multithreading_Threadpool_Core - Fatal编程技术网

C#,关于线程池的问题

C#,关于线程池的问题,c#,multithreading,threadpool,core,C#,Multithreading,Threadpool,Core,我有几个关于线程池的问题。首先,如果我想限制异步执行中的线程数量,我会改变什么?其次,在“设置最大线程数”和“设置最小线程数”中,完成端口线程数是多少?不要弄乱线程池(即限制线程)-这不是你要弄乱的,系统的核心部分将需要它。你冒着挨饿和僵持的风险 可以使用自定义线程池实现,也可以使用TPL中的内置选项在数量有限的线程上运行操作。SetMaxThreads呢?和SetMinThreads。如果有风险,提供这些方法有什么意义?@0A0D您的意思是,警告“更改线程池中的最大线程数时要小心。虽然您的代码

我有几个关于线程池的问题。首先,如果我想限制异步执行中的线程数量,我会改变什么?其次,在“设置最大线程数”和“设置最小线程数”中,完成端口线程数是多少?

不要弄乱
线程池(即限制线程)-这不是你要弄乱的,系统的核心部分将需要它。你冒着挨饿和僵持的风险


可以使用自定义线程池实现,也可以使用TPL中的内置选项在数量有限的线程上运行操作。

SetMaxThreads呢?和SetMinThreads。如果有风险,提供这些方法有什么意义?@0A0D您的意思是,警告“更改线程池中的最大线程数时要小心。虽然您的代码可能会受益,但更改可能会对您使用的代码库产生不利影响。”@0A0D我的观点是:在OP提供的场景中,这不是问题。如果需要该级别的控制,请不要使用
线程池。您可能会使用这些方法将它们稍加修饰,但用于解决不特定于任何单个任务的缩放问题。即使这样,我也会坦率地让系统在内部管理它。我必须使用threadpool,因为我不知道需要启动多少线程。我需要更改最大数量,因为我希望每个处理器执行一次(不知道它们有多少核)。所以我真的不能使用tpl库,对吗?我也不能使用自定义线程池0。o@Joey无论你做什么,不要把线程池设置得那么紧!是的,您可以很容易地使用自定义线程池—只需启动尽可能多的工作线程(Environment.ProcessorCount
)。同样,TPL-只需使用
环境.ProcessorCount
设置
并行选项.MaxDegreeOfParallelism
的值。还没有足够的答案。。。。