libstdc++ 在 Mac 上找不到线程文件

libstdc++ cannot find thread file on Mac

请看看这个简单的C++程序:

#include <iostream>
#include <thread>

void thread_test()
{
    std::cout << "Thread test\n";
}

int main(int argc, const char * argv[])
{
    std::thread t(thread_test);
    t.join();

    return 0;
}

我正在尝试在 macOS Sierra 上使用 Xcode 编译它。它不编译。它说 'thread' file not found.

在构建设置中,我为 C++ Standard Library 使用了 libstdc++ (GNU C++ standard library) 选项。如果我将此设置切换为 libc++ (LLVM C++ standard library with C++11 support) 那么没关系,它会编译。但我的目标是通过使用 libstdc++ 而不是 libc++ 以某种方式编译它。有可能吗?你能给我一个建议吗?

Xcode 附带的 libstdc++ 版本很旧,不包括 thread。 macOS 上的 pthreads 缺少一些超时函数(例如 pthread_mutex_timedlock())。

您根本无法在 macOS 上同时使用 std::thread 和 Xcode 提供的 libstdc++。您必须切换到 libc++ 或使用不同的库 boost::thread 确实有效。 TinyThread++ 也是一个替代方案,可以在带有 libstdc++ 的 macOS 下工作。