я заполнение задачи фабрики с задачами что-то вроде этого (псевдокод):задач завод сила больше задач, чтобы начать в начале
private int _taskcounter;
надреза
var factory = new TaskFactory();
for(var i = 0;i<1000;i++)
factory.StartNew(() => doWork());
надреза
private void doWork(){
Interlocked.Increment(ref _taskcounter);
//do some slow I/O work here
Interlocked.Decrement(ref _taskcounter);
}
, если вы сейчас смотрите _taskcounter, вы можете увидеть
, изначально его начало около 10 заданий , но затем он запускает от 1 до 2 задач/с, пока очередь не закончится.
мелкое очевидное поведение, не так ли?
Мой вопрос:
Есть ли способ заставить фабрику задач начать больше задач с самого начала?
im уже ограничивает максимальное количество запущенных задач вариацией некоторого класса класса msdn для предотвращения чрезмерного потребления памяти.
или что-то не так с этим смешным методом измерения или моим соображением?
его не нужно запускать все работы в разных потоках, иначе я бы не использовал завод
Я только хочу получить выгоду от нерабочего поведения кражи фабрики.
для всего остального, полагаясь на интеллект завода.
Почему именно вы хотите запустить сразу столько задач? Что они делают? Уверены, что выполнение много раз параллельно ускорит процесс? – svick
это определенно будет. Как уже говорилось, это медленные задачи tcp io. Задачи io на 99% ждут ответа аппаратного/сетевого ресурса, поэтому большое влияние оказывает скорость при параллелизации процесса. –