• MingGW Posix VS Win32


    MinGW-posix和win32纠缠的瓜娃子

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

    MinGW-posix和win32纠缠的瓜娃子

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

    盘TA

    wiki posix

    • wiki中文-UNIX API标准

    Posix-Portable Operating System Interface可移植操作系统接口

    wiki win32 暂且认定TA为win32API标准

    Windows API

    他俩有啥纠葛呢

    • 我来问问Google

    posix win32 google results

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

    • 看看写的啥

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

    StackOverflow问答posix和win32

    我也去抄一抄

    读的有点膈应的翻译:
    我正在安装 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咋就不写这俩呢,ε=(´ο`*)))唉

    如果你能用在线的installer就直接用,但我试了一下绿条条根本就不跑,选择一下自己下包安装啦。

    一个俗人,喜欢编程,偶尔写诗,可能会写歌词
  • 相关阅读:
    [Clojure] 包管理器leiningen配置国内镜像仓库
    [Haskell] 为什么列表操作++很昂贵?
    js判断除了空格换行之外是否为空
    iOS上架之隐私信息访问权限(uni-app)
    vue之动态绑定class
    this
    uni-app 上传图片之压缩图片上传
    uniapp无痛刷新token
    jQuery 发送跨域请求(jsonp)
    Document
  • 原文地址:https://www.cnblogs.com/rockbean/p/12318002.html
Copyright © 2020-2023  润新知