我想要下载Windows系统下最新的gcc 4.7.2
编译器。当我打开了这个页面,本应该看到下载链接,但是我遇到了两个类别:
- threads-posix
- threads-win32
这两者有什么区别?它们只是线程实现方式不同吗?我的意思是,它们只是在实现上不同,因此最终结果(类、使用方法等)仍然相同吗?还是它们会强制使用特定的编码风格?
我想要下载Windows系统下最新的gcc 4.7.2
编译器。当我打开了这个页面,本应该看到下载链接,但是我遇到了两个类别:
这两者有什么区别?它们只是线程实现方式不同吗?我的意思是,它们只是在实现上不同,因此最终结果(类、使用方法等)仍然相同吗?还是它们会强制使用特定的编码风格?
所以,您提供的链接引导到了针对Windows的独立GCC 4.7.2版本构建,也称为mingw64。为了构建这个编译器,使用了一组脚本来帮助定义编译选项。这些脚本简单地称为MinGW-builds,并可以在不同的地方找到:
这些脚本有一个选项指定C++11标准中std::threads部分要使用哪种线程模型(由于在GCC的这个版本上应用了一个实验性补丁,因此MinGW允许这样做)。在一种情况下,使用win32线程API,在另一种情况下,使用posix API。
请注意,Windows并非默认支持所有POSIX API,因此需要使用某些外部仿真库(winpthreads)。
GCC源码配置脚本有一个选项来指定该API(--enable-threads=),这就是构建脚本中使用的选项。
简而言之,对于这个版本的mingw,threads-posix发布将使用posix API并允许使用std::thread,而threads-win32将使用win32 API,并禁用标准中的std::thread部分。