MinGW-posix和win32纠缠的瓜娃子

官方首席佛偈(SourceForge)的官网下载页

法克油啊,让我一个小白情何以堪。

盘TA

wiki posix

  • wiki中文-UNIX API标准

wiki win32 暂且认定TA为win32API标准

他俩有啥纠葛呢

  • 我来问问Google

good job 果然天下文章一大抄,我爸说的没错 No fuck u any more

  • 看看写的啥

我他娘的在win下装明瓜娃64的时候有俩选项,win32和posix线程。win32线程和皮线程的差异我还是知道的,蛋疼的是这里的选项是个啥(心里话他娘的不会安装旁边给个hint啊)
让我瑟瑟发抖的是,要是我选posix,鬼知道会不会让我蛋疼的调用不了WINAPI,比如新增线程

我也去抄一抄

读的有点膈应的翻译:
我正在安装 mingw-w64 on Windows,有两个选项: win32线程和posix线程。 我知道win32线程和pthreads之间的区别,但是我不明白这两个选项之间的区别。 我怀疑如果我选择了posix线程,它将阻止我调用像CreateThread这样的WinAPI函数。
似乎这个选项指定了哪个程序或者库将使用哪个线程 API,但通过什么? 由 GCC,libstdc++或者其他事物?
我发现:什么区别thread_posixs和 thread_win32 gcc Windows 港?

解答如下:

简而言之,对于这个版本的mingw,threads-posix发行版将使用 posix API并允许使用 std:: thread,threads-win32将使用 win32api,并禁用标准的std::thread 部分。
好的,如果我选择win32线程,那么 std::thread 将不可用,但是win32线程仍将被使用。 但是用什么?

  • gcc运行时( 特殊的异常处理)的部分依赖于正在使用的线程模型。 因此,如果你使用的是使用posix线程构建的运行时版本,但决定在你自己的代码中使用 win32 api创建线程,那么你可能会遇到一些问题。
    即使你正在使用运行时的win32线程版本,你可能也不应该直接调用 win32 api 。 引用来自 MinGW常见问题解答:
  • 由于MinGW使用了 Windows 附带的标准Microsoft运行时库,所以你应该小心并使用正确的函数来生成一个新的线程。 CreateThread 函数将不会正确地为运行时库设置堆栈。 你应该使用 _beginthreadex,它是( 几乎几乎) 完全兼容 CreateThread 。
    GCC附带了一个编译器运行时库( 宋体),它使用( 其中之一) 提供了一个用于在它的支持的语言中实现多线程相关功能的。 最相关的例子是 C++11 libstdc++ ,,, gcc时没有一个完整的实现了其内部win32线程模型。 MinGW-w64提供了 winpthreads ( Win32多线程API之上的一个pthreads实现),GCC可以链接它来启用所有的奇妙特性。
  • 我必须强调这里选项不允许你编写任何你想要的代码( 对于你可以在代码中调用的API,它有绝对的无影响) 。 它只反映了 (libgcc/libstdc++/...) 库的使用了哪些运行时。 由 @James 引用的警告与gcc线程模型的内部无关,而是与microsoft实现的CRT有关。

总结:

posix: 启用 c++11/c11多线程功能。 使depend依赖于 libwinpthreads,这样即使你不直接调用 API,你将分发 winpthreads 。 使用应用程序分发一个DLL没有什么问题。
win32: 没有C++11多线程功能。
对任何调用 Win32 api或者 pthreads api的用户代码都不影响。 你可以同时使用两个。

原作者:rubenvb

https://ask.helplib.com/windows/post_675746

大结局

posix和win32对我们日常开发没啥影响,我看谁爽选哪个就好了。

--

另外调试选项sjlj和seh的你也可以用这个套路自己去扒一扒,大概就是调试性能和report方式啥的

吐槽sourceforge写了洋洋洒洒的wiki咋就不写这俩呢,ε=(´ο`*)))唉

MingGW Posix VS Win32 - 明瓜娃的毒因的更多相关文章

  1. mingw-w64线程模型:posix vs win32(posix允许使用c++11的std:: thread,但要带一个winpthreads,可能需要额外dll)

    我正在安装 mingw-w64 on Windows,有两个选项: win32线程和posix线程. 我知道win32线程和pthreads之间的区别,但是我不明白这两个选项之间的区别. 我怀疑如果我 ...

  2. php配置参数.md

    php 5.5 配置文件 php.ini Options user_ini.filename string 设定了 PHP 会在每个目录下搜寻的文件名:如果设定为空字符串则 PHP 不会搜寻.默认值是 ...

  3. SQLite剖析之体系结构

    1.通过官方的SQLite架构文档,理清大体的系统层次:Architecture of SQLite 2.阅读SQLite Documentation中Technical/Design Documen ...

  4. [流媒体]VLC主要模块

    libvlccore vlcthread: vlc线程是libvlccore的重要组成部分,我们在src文件夹下面android.os2.posix.win32等文件夹下包含thread.c文件,说明 ...

  5. SQLite数据库的体系结构(翻译自sqlite.org)

    $1 简介    本文档描述了SQLite库的体系结构,这些信息对那些想理解和修改SQLite的内部工作机制的人是有用的.    下图显示了SQLite的主要组成部件及其相互关系,下面的内容将描述每一 ...

  6. opcache运行时配置参数详解

    PHP的opcode缓存又出 了新成员(说新不新,也有一段日子了),那就是opcache.新浪微博等都在使用,惠新宸老师强力推荐.本人最近根据官网地址 (http://www.php.net/manu ...

  7. 跨平台的WatiForSingleObject实现

    移植win32程序时,有一个难点就是涉及到内核对象的操作,需要模拟win32的实现. 其中比较奇葩的一个是WaitForSingleObject系列. Linux中没有类似的timeout实现,模拟这 ...

  8. NTFS 文件系统解析

    1. windows 下磁盘文件读写 下面是读取D:\磁盘上的第0扇区 512 Bytes CreateFile()打开磁盘,获取文件句柄: SetFilePointer()设置读写的位置: Read ...

  9. 在Window和Linux下使用Zthread库

    ZThread库是一个开源的跨平台高级面向对象的线性和sycnchronization 库,以运行POSIX 和Win32 系统中的C++程序. ZThread库的主页:http://zthread. ...

随机推荐

  1. Python3-Selenium自动化测试框架(二)之selenium使用和元素定位

    Selenium自动化测试框架(二)之selenium使用和元素定位 (一)selenium的简单使用 1.导包 from selenium import webdriver 2.初始化浏览器 # 驱 ...

  2. 输入URI,按下回车发生了什么?

    当我们输入URL,按下回车发生了什么? 这个题目很俗套- -但是是面试经常出现的题目了.今天听尼古拉斯•屌•大斌哥介绍关于从URI到浏览器呈现给我们页面发生了什么.感觉收获颇多.索性就翻阅了一些其他资 ...

  3. ArcEngine语法笔记(VB)

    1.获取图层字段 Dim pTable As ITable = pLayer Dim pField As IField pField = pTable.Fields.Field(i) Next  2. ...

  4. 人脸识别系统 —— 基于python的人工智能识别核心

    起因 自打用python+django写了一个点菜系统,就一直沉迷python编程.正好前几天公司boss要我研究一下人脸识别,于是我先用python编写了一个人脸识别系统的核心,用于之后的整个系统. ...

  5. Zookeeeper的安装与集群搭建

    简介 Zookeeper下载 官网地址:点我直达 百度云盘:点我直达 踩坑录 官网下载一定要下载带bin的 要不然zookeeper起不起来,找不到加载类,原来从版本3.5.5开始,带有bin名称的包 ...

  6. webpack进阶用法你都get到了么?

    如何消除无用代码:打包自己的私有js库:实现代码分割和动态import提升初次加载速度:配置eslint规范团队代码规范:打包异常抓捕你都get到了么? 摇树优化:Tree Shaking webpa ...

  7. 正斜杠(" / ")和反斜杠(" \ ")的区别

    反斜杠“\”是电脑出现了之后为了表示程序设计里的特殊含义才发明的专用标点.所以除了程序设计领域外,任何地方都不应该使用反斜杠. 如何区分正反斜杠 英语:"/" 英文是forward ...

  8. 手势识别控制pygame精灵

    步骤: 编写简易pygame精灵游戏(只实现键盘上下左右控制) 解决opencv手势识别核心问题 上述2部分对接上 pygame部分我们只加载个背景,然后里面放1只乌龟精灵,用键盘的上下左右键来控制, ...

  9. python+pandas+jupyter notebook 的 hello word

  10. 我的C++开发工具链

    工欲善其事,必先利其器.想要干好活,顺手的工具是必不可少的.来分享下我的C++开发工具链. 平台:Windows 编译器:MSVC IDE:Visual Studio 版本控制:TortoiseGit ...