2010-08-05 3 views
1

Недавно я столкнулся с this исчерпывающим объяснением новой библиотеки .NET TPL, и это звучало довольно впечатляюще. Прочитав статью, кажется, что новый диспетчер задач настолько умен, что он даже может сказать, будут ли ваши параллельные задачи быстрее, если они будут выполняться последовательно в одном потоке, а не быть разделены на рабочие потоки. Это часто может быть трудным решением.Темы и новая библиотека задач в C#

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

Я правильно понял, что все, что я делал ранее с потоками, теперь должно выполняться с заданиями? Конечно, всегда будут случаи, когда вам нужен тонкий контроль, но нужно ли вообще бросать обычную фоновую работу на задачу, а не на новый поток? Т.е. имеет значение по умолчанию: «Мне нужно, чтобы это выполнялось в фоновом режиме => новый поток» вместо этого стал «новой задачей»?

ответ

2

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

+1

Чтобы уточнить, IIRC, в .net 4, они обрабатываются новой * реализацией ThreadPool от команды TPL. –

+0

@ Лукас: Спасибо, что указали, что это не тот старый пул. –

+1

И вы можете переопределить, вы можете сказать, что задача длинная, и она будет раскручивать новый поток только для этой задачи. Другими словами, вы получаете все преимущества нового TPL * и * старого класса потоков. –

1

Задачами управляют TaskScheduler. Задача TaskScheduler по умолчанию запускает задачи в потоках ThreadPool, и поэтому у вас есть те же проблемы, что и при использовании ThreadPool. Трудно контролировать настройку (приоритет, локаль, фон/передний план и т. Д.) Для потоков в пуле. Если вам нужно контролировать любой из этих аспектов, лучше управлять потоками самостоятельно. Вы также можете реализовать свой собственный планировщик для решения некоторых из этих проблем.

Для большинства других частей новый класс задач работает очень хорошо.

Смежные вопросы