Как уступить из параллельных задач в .NET 4.5
Я хотел бы использовать .NET итератор с параллельными задачами / await ?. Что-то вроде этого:
IEnumerable Foo(IEnumerable source)
{
Parallel.ForEach(
source,
s=>
{
// Ordering is NOT important
// items can be yielded as soon as they are done
yield return ExecuteOrDownloadSomething(s);
}
}
К сожалению, .NET изначально не может справиться с этим. Лучший ответ на данный момент @svick - используйте AsParallel ().
БОНУС: Какой-нибудь простой асинхронный / ожидающий код, который реализует несколько издателей и одного подписчика? Подписчик уступит, а пабы обработают. (только основные библиотеки)