在 Windows 上的 gcc 端口中,thread_posixs 和 thread_win32 有什么区别?

11

我想要下载Windows系统下最新的gcc 4.7.2编译器。当我打开了这个页面,本应该看到下载链接,但是我遇到了两个类别:

  1. threads-posix
  2. threads-win32

这两者有什么区别?它们只是线程实现方式不同吗?我的意思是,它们只是在实现上不同,因此最终结果(类、使用方法等)仍然相同吗?还是它们会强制使用特定的编码风格?

1个回答

21

所以,您提供的链接引导到了针对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部分。

2
为了完整性(因为它仅适用于5.3.0及以上版本),https://github.com/meganz/mingw-std-threads 使得可以使用 std::thread 与 win32 线程模型。 - Jerry Jeremiah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接