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.
Что вы предлагаете мне использовать?