Я хотел бы знать, что является лучшим способом, или есть ли какие-либо документы/статьи, которые могут помочь мне определить, в чем разница между использованием Parallel.foreach и Task в обычном для каждого цикла, например:
случай 1 - Parallel.foreach:
Parallel.foreach
{
// Do SOmething thread safe: parsing an xml and then save
// into a DB Server thry respoitory approach
}
случай 2 - Задача в foreach:
foreach
{
Task t1 = Task.factory.startNew(()=>
{
//Do the same thing as case 1 that is thread safe
}
}
Task.waitall()
- Я провел свои собственные тесты, и результат показывает, что случай 1 работает намного лучше, чем случай 2. Соотношение примерно такое: последовательный против случая 1 против случая 2 = 5 с : 1 с : 4 с
Хотя есть почти 1:4 на корпусе 1 и на корпусе 2? Значит ли это, что мы всегда должны использовать parallel.foreach или parallel.for, если хотим работать параллельно внутри цикла?