Универсальная библиотека C ++, которая предоставляет функциональность QtConcurrent? - PullRequest
3 голосов
/ 12 июня 2010

QtConcurrent - это круто.

Я позволю документам Qt говорить за себя:

QtConcurrent включает в себя API-интерфейсы в стиле функционального программирования для параллельного спискаобработка, включая реализацию MapReduce и FilterReduce для систем с общей памятью (нераспределенной) и классы для управления асинхронными вычислениями в приложениях с графическим интерфейсом.

Например, вы даете QtConcurrent::map() итерируемую последовательность ифункция, которая принимает элементы типа, сохраненного в последовательности, и эта функция применяется ко всем элементам в коллекции.Это делается многопоточным способом, с пулом потоков, равным количеству логических процессоров в системе.

В QtConcurrent есть множество других функций, таких как filter(), filteredReduced() и т. Д. Стандартные функции CompSci map / Reduce и т. П.

Я полностью влюбленс этим, но я начинаю работу над проектом OSS, который не будет использовать каркас Qt.Это библиотека, и я не хочу заставлять других зависеть от такой большой структуры, как Qt.Я пытаюсь свести к минимуму внешние зависимости (это неплохо).

Я ищу универсальную платформу C ++, которая предоставляет те же / похожие высокоуровневые примитивы, что и QtConcurrentи это работает с коллекциями STL.AFAIK boost не имеет ничего подобного (хотя я могу ошибаться).boost::thread очень низкий уровень по сравнению с тем, что я ищу (но если бы запрошенная библиотека использовала boost::thread для работы на низком уровне, это было бы здорово).

Я знаю, что в C # есть что-тоочень похоже на их параллельные расширения, так что я знаю, что это не только идея Qt.

Что вы предлагаете мне использовать?

Ответы [ 2 ]

1 голос
/ 12 июня 2010

Я слышал хорошие вещи о резьбовых строительных блоках Intel , хотя я не использовал его

По состоянию на октябрь 2009 года, похоже, что в нем не указано сокращение карты. Но люди проявили интерес и предложили что-то придумать:

http://software.intel.com/en-us/forums/showthread.php?t=65053

"Карта редукции выглядит как простая комбинация фильтра, сортировки и редукции, но для ее эффективности может потребоваться некоторая магия"
0 голосов
/ 12 июня 2010

Можете ли вы использовать Boost ?Я не думаю, что он обеспечивает такой же высокий уровень абстракции, как слой Qt, но его можно создать как достаточно тонкий фасад поверх примитивов Boost (на самом деле, возможно, некоторые из существующих add-ons уже предоставляют то, что вам нужно - я должен признать, что я не знаком с ними подробно, поэтому я говорю «возможно»; -).

Если вы обнаружите, что существующее дополнение-не подходят, ваш фасад будет отличным дополнением, чтобы внести свой вклад в Boost Vault (или другой репо с открытым исходным кодом) самостоятельно, "отдавая" полезный вклад с открытым исходным кодом многократного использования ... Я надеюсь, что это мотивирует вассделайте эту работу, если нужно! -)

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