указать номер темы в C Sharp - PullRequest
0 голосов
/ 10 января 2012

Есть ли способ динамически кодировать потоки в C #?например, мы хотим, чтобы пользователь программы определял количество потоков, используемых для некоторого вычисления

Ответы [ 3 ]

1 голос
/ 10 января 2012

Это широкая тема, но если вы используете .NET 4.0 и в основном связаны с процессором (что вы указываете), то загляните в класс Parallel. По умолчанию выбирается количество используемых потоков (*), но вы также можете изменить это .

(*) Обычно зависит от количества имеющихся у вас процессоров / ядер, что имеет смысл для операций, интенсивно работающих с процессором.

0 голосов
/ 10 января 2012

Вы можете установить MaxDegreeOfParallelism при использовании Parallel.Возможно, он решит использовать меньше потоков, но не будет использовать больше.

Вы можете вручную создать x потоков и самостоятельно разбить их на части.

Вы можете разбить работу насами меньшие рабочие элементы, поставьте их в очередь в пуле потоков по умолчанию и вызовите SetMaxThreads.

Как и выше, но не мешая другому коду, вы можете ставить делегатов в очередь в свою потоковую очередьсоздать x потоков, которые снимают с очереди и вызывают до тех пор, пока очередь не станет пустой.

Вы можете использовать Semaphore.

0 голосов
/ 10 января 2012

Вы можете использовать ThreadPool

Подробнее: http://msdn.microsoft.com/en-us/library/3dasc8as(v=vs.80).aspx

...