如何在 Mac 上使用 c++17 并行标准库算法?

How do you use c++17 parallel standard library algorithms on mac?

本文关键字:标准 并行 算法 c++17 Mac      更新时间:2023-10-16

我想在我的cmake项目中使用c++17标准库中的并行排序(它是跨平台的,在Linux和MSYS2上运行良好(,但Apple Clang的libc++还没有实现它,而gnu的libstdc++已经实现了。如何在 Mac 上的 cmake 项目中使用 gnu 对 c++17 库的实现?

我找到的解决方案是从源代码构建 gcc 并使用该编译器和它附带的库。它还需要与-static-libgcc -static-libstdc++静态链接。切换到 gnu 标准库后,我在使用 fmt 库时也遇到了问题,但通过使用仅标头版本的 fmt 解决了这个问题。

这是包含完整详细信息的 CMakeLists.txt 文件。

在Mac上并行化的最佳方法可能是遵循Apple给出的建议 - 使用调度呼叫。

我在 C++11 应用程序上发布了一个示例,该应用程序使用在 Mac OS Sierra 下不起作用dispatch_apply

这使用dispatch_apply - 几乎是for-to循环的插入。