法克油啊,让我一个小白情何以堪。c++
good job 果真天下文章一大抄,我爸说的没错 No fuck u any morewindows
我他娘的在win下装明瓜娃64的时候有俩选项,win32和posix线程。win32线程和皮线程的差别我仍是知道的,蛋疼的是这里的选项是个啥(内心话他娘的不会安装旁边给个hint啊) 让我瑟瑟发抖的是,要是我选posix,鬼知道会不会让我蛋疼的调用不了WINAPI,好比新增线程api
读的有点膈应的翻译: 我正在安装 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线程仍将被使用。 可是用什么?post
- gcc运行时( 特殊的异常处理)的部分依赖于正在使用的线程模型。 所以,若是你使用的是使用posix线程构建的运行时版本,但决定在你本身的代码中使用 win32 api建立线程,那么你可能会遇到一些问题。 即便你正在使用运行时的win32线程版本,你可能也不该该直接调用 win32 api 。 引用来自 MinGW常见问题解答:
- 因为MinGW使用了 Windows 附带的标准Microsoft运行时库,因此你应该当心并使用正确的函数来生成一个新的线程。 CreateThread 函数将不会正确地为运行时库设置堆栈。 你应该使用 _beginthreadex,它是( 几乎几乎) 彻底兼容 CreateThread 。 GCC附带了一个编译器运行时库( 宋体),它使用( 其中之一) 提供了一个用于在它的支持的语言中实现多线程相关功能的。 最相关的例子是 C++11 libstdc++ <thread>,<mutex>,<future>, 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的用户代码都不影响。 你能够同时使用两个。性能
原做者:rubenvbgoogle
https://ask.helplib.com/windows/post_675746spa
posix和win32对咱们平常开发没啥影响,我看谁爽选哪一个就行了。
--
另外调试选项sjlj和seh的你也能够用这个套路本身去扒一扒,大概就是调试性能和report方式啥的
若是你能用在线的installer就直接用,但我试了一下绿条条根本就不跑,选择一下本身下包安装啦。
原文出处:https://www.cnblogs.com/rockbean/p/12318002.html