Как убедиться, что AsParallel () работает параллельно - PullRequest
0 голосов
/ 13 мая 2011

Я получил следующий код

foreach (var portfolio in portfolios.AsParallel()){ Some Processing ...}

и хотел бы убедиться, что работает параллельно на другом ядре. Есть ли способ обеспечить это?

Я пытался

                Parallel.ForEach(portfolios,
                portfolio =>
                { Some Processing....}

и может видеть, как создаются и удаляются различные потоки, а также может видеть параллельное задание в окне Parallel Task, но не уверен насчет Collection.AsParallel (), также это дает мне непредсказуемое поведение.

Есть идея получше?

1 Ответ

3 голосов
/ 13 мая 2011

Смысл AsParallel в том, что вы этого не делаете.Вы оставляете это CLR, и он решает, как его запустить и оптимизировать, хотя, скорее всего, он будет работать параллельно.

Вам также нужно объяснить, что вы подразумеваете под противоречивым.Скорее всего, вы сталкиваетесь с проблемами потоков и синхронизации.Любая операция, которая не является поточно-ориентированной, не является подходящим кандидатом для AsParallel, если вы не наблюдаете за синхронизацией состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...