【发布时间】:2012-11-06 02:43:31
【问题描述】:
我一直在尝试使用新引入的 C++ 11 std::thread 功能在 Cygwin 下编译多线程 hello-world 程序,但没有成功。我自己编译安装了 GCC 4.7.2,同样的代码在 Linux 下使用相同版本的 GCC 运行没有任何问题。我得到的第一个错误是编译器无法识别 -pthread 标志。在研究了一段时间后,我注意到有人在 Cygwin 上说这个标志应该是 -lthread。我进行了更改并且该错误消失了,但是发生了另一系列错误,告诉我线程不是 std 的成员。不知是安装时编译器配置错误,还是Cygwin下根本不支持std::thread?
【问题讨论】:
-
我没有仔细看以确定,但我的猜测是后者。
std::thread和 company 就像 pthreads 一样,在 Linux 上的实现应该非常简单。 Windows 的线程模型非常不同,因此需要做更多的工作。 -
但是Windows上有pthreads。
-
pthreads 支持是 Cygwin 的一部分 - 不需要 pthreads-win32。
-
非常感谢您的回复,但我仍然很困惑。 Cygwin下有没有办法使用
std::thread?一个简单的否定答案听起来很奇怪,因为它现在是 C++ 标准库的一部分。 -
如果您查看最新的 mingw 版本,您会注意到实际上有 2 个不同的版本:一个支持 std::thread,另一个不支持,所以在 GCC 端口到 windows世界,我不认为 std::thread 支持是给定的。
标签: c++ multithreading gcc c++11 cygwin