【发布时间】:2015-07-08 22:47:28
【问题描述】:
在 MinGW-W64 在线安装程序中,您可以选择几个字段。但是我找不到任何关于此的文档,而且我所做的猜测并没有给我想要的行为。
显然,这个项目已经投入了大量的工作,因此遗憾的是,由于缺乏基本的文档而阻碍了采用。
“版本”和“架构”字段是不言自明的,但我遇到问题的其他字段是(显示为当前安装程序的值):
-
线程,选项
posix和win32 -
例外,选项
dwarf和sjlj -
构建修订版,选项
0、1、2。
我在之前的安装中选择的值是 win32、seh 和 1(显然,从那时起选项已经改变,但我不知道是什么)。
每个选项的优缺点是什么,尤其是线程模型和异常处理,哪个版本是“最好的”?
我使用x86_64-win32-seh-rev1遇到的具体问题是:
-
不支持
std::thread和std::condition_variable - 调试时(使用 Code::Blocks 作为 IDE),如果抛出异常,它不会跳转到异常处理程序;选择 Next Line 3 次什么都不做,然后中止运行。
我可以处理调试问题,但如果有工作的 C++11 线程会非常好。
【问题讨论】:
-
更新。注意到
std::thread等隐藏在_GLIBCXX_HAS_GTHREADS后面,这不是我安装的mingw-w64 定义的 -
不要自己定义 - 如果你链接 pthread 的,它就会启用。
-
对于其他阅读本文的人:当使用
win32线程时,this project 启用 C++11 线程、互斥锁和 condition_variable,它似乎可以工作!