VC10 PPL или подготовить для резьбы STL

Я использую MSVC 2010, запускаю новый MFC-проект и сейчас пытаюсь решить, какую библиотеку использовать для одновременных задач. Я знаю о новых возможностях потоков C ++ 0x, но они не реализованы в VC10. VC12 пока не вариант, но он появится в будущем. У меня есть Microsoft PPL, который мне подходит, но мы могли бы перейти с Windows на Linux для новых проектов, поэтому для повторного использования кода, возможно, пребывание в STL более переносимо? Для этого у меня есть возможность использовать boost, чтобы перейти на стандартный с VC12.

Мой вопрос, что я должен предпочесть, PPL или временно повысить, а затем STD? Я хотел бы услышать ваш опыт с обоими, который является более мощным, больше удобства, преимуществ и недостатков.

2

Решение

Библиотеки параллелизма PPL и C ++ 11 на самом деле не являются прямыми заменителями. PPL предлагает высокоуровневый, основанный на задачах подход к параллелизму и может быть как более простым в работе, так и более эффективным, чем управление потоками напрямую, используя std :: thread или аналогичные библиотеки потоков. PPL также включает в себя такие вещи, как параллельные алгоритмы (parallel_for_each, parallel_transform, parallel_reduce, parallel_sort и т. Д.) И параллельные контейнеры, которые не включены в библиотеки параллелизма C ++ 11.

Стоит также отметить, что PPL и Intel TBB (Threading Building Blocks) в значительной степени предназначены для совместного использования одного и того же интерфейса, а TBB поддерживается в Linux, поэтому при использовании PPL существует некоторая кроссплатформенная переносимость. Intel, Microsoft и NVIDIA имеют совместное предложение для библиотеки параллельных алгоритмов для будущих версий стандарта C ++ (C ++ 14 и выше), основанных на PPL / TBB.

3

Другие решения

Повышающие потоки просты, переносимы, хорошо документированы и являются моей обычной формой параллелизма в C ++ в наши дни. Если вы думаете о запуске сборок Linux, не полагайтесь на какие-либо функции VC, иначе ваш ход будет очень болезненным (сам делал это до этого …).

При этом новый контент STL во многих отношениях очень похож на boost, так что вы можете использовать boost как трамплин для std без особых проблем. Я бы прочитал этот пост на различия между бустом и потоками C ++ 11 и интерпретировать для вашего случая использования, прежде чем я принял конкретное решение.

Мой опыт работы с PPL довольно ограничен, но создание задач (потоков) может несколько отличаться от традиционных потоков и иметь разные параметры пути управления. Скорее всего, вы будете исправлены в Visual Studio / Windows, если пойдете по пути PPL — так что держите это в своей оценке выбора библиотеки. Я читал, что хорошие примеры PPL немного редки (возможно, поэтому быстрый поиск не дал мне лучшего результата при сравнении PPL с другими библиотеками параллелизма).

0

По вопросам рекламы [email protected]