在C Sharp中指定线程数

时间:2012-01-10 15:52:19

标签: c# multithreading dynamic macros

有没有办法在C#中动态编​​码线程? 例如,我们希望程序用户定义用于某些计算的线程数

3 个答案:

答案 0 :(得分:1)

这是一个广泛的主题,但是如果您使用的是.NET 4.0并且主要是CPU绑定(您指明的是),那么请查看Parallel类。默认情况下,它选择使用的线程数(*),但您也可以change that

(*)通常基于您拥有的CPU /核心数量,这对CPU密集型操作有意义。

答案 1 :(得分:0)

使用MaxDegreeOfParallelism时,您可以设置Parallel。它可能决定使用更少的线程,但它不会使用更多。

你可以手动创建x个线程,然后自己将它们分成几部分。

您可以自己将工作分解为较小的工作项,将它们排入默认的线程池,然后调用SetMaxThreads

如上所述,但不会干扰其他代码,您可以将代理队列入您自己的线程安全队列,并创建出队并调用的x个线程,直到队列为空。

您可以使用Semaphore

答案 2 :(得分:-1)

您可以使用ThreadPool

更多信息:http://msdn.microsoft.com/en-us/library/3dasc8as(v=vs.80).aspx