有没有办法在C#中动态编码线程? 例如,我们希望程序用户定义用于某些计算的线程数
答案 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