什么是windows的gcc端口中的thread_posixs和thread_win32之间的区别?

Rik*_*ika 11 c++ windows multithreading gcc4.7

我想下载最新版本的gcc 4.7.2Windows编译器.
当我到这个页面在这里我本来是要看到一个下载链接,我面临着两大类:

  1. 线程,POSIX
  2. 线程-win32的

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

did*_*erc 19

因此,您提供的链接将导致构建独立的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部分标准.

  • 为了完整性(因为它仅适用于5.3.0及更高版本),https://github.com/meganz/mingw-std-threads可以将std :: thread与win32线程模型一起使用. (2认同)