一尘不染

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

c++

我想下载适用gcc 4.7.2于 Windows 的最新可用版本的编译器。当我到达本应该看到下载链接的页面时,我遇到了两个类别:

  1. 线程-posix
  2. 线程-win32

这两者有什么区别?它们只是线程实现吗?我的意思是它们只是在实现方式上有所不同,因此最终结果(类,如何使用它们等)保持不变?还是他们强加了特定的编码风格?


阅读 76

收藏
2022-08-29

共1个答案

一尘不染

因此,您提供的链接导致构建独立的 gcc 4.7.2 for windows,即 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 部分标准

2022-08-29