• 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就直接用,但我试了一下绿条条根本就不跑,选择一下自己下包安装啦。

    一个俗人,喜欢编程,偶尔写诗,可能会写歌词
  • 相关阅读:
    Linux下sed,awk,grep,cut,find学习笔记
    Python文件处理(1)
    KMP详解
    Java引用详解
    解决安卓中页脚被输入法顶起的问题
    解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
    null id in entry (don't flush the Session after an exception occurs)
    HQL中的Like查询需要注意的地方
    spring mvc controller间跳转 重定向 传参
    node to traverse cannot be null!
  • 原文地址:https://www.cnblogs.com/rockbean/p/12318002.html
Copyright © 2020-2023  润新知