Значение параметров в установщике mingw-w64
в онлайн-установщике MinGW-W64 есть несколько полей, которые вы можете выбрать. Однако я не могу найти никакой документации по этому поводу, и догадки, которые я сделал, не дают мне желаемого поведения.
очевидно, что в этом проекте много работы, поэтому жаль, что поглощение сдерживается отсутствием базовой документации.
поля "версия" и "архитектура" являются самоочевидными, но другие поля, с которыми у меня проблемы (значения, показанные как текущий установщик):
-
темы, options
posix
иwin32
-
исключение, options
dwarf
иsjlj
-
построить редакции, options
0
,1
,2
.
значения, которые я выбрал при предыдущей установке, были win32
, seh
и 1
(очевидно, что с тех пор варианты изменились, но я не мудрее, что к чему).
что являются ли плюсы и минусы каждого варианта, особенно модели потоков и обработки исключений, и какая версия "лучшая"?
конкретные проблемы, с которыми я столкнулся используя x86_64-win32-seh-rev1
являются:
-
std::thread
иstd::condition_variable
не поддерживаются - при отладке (используя Code::Blocks в качестве IDE), если возникает исключение, оно не переходит к обработчику исключений; выбор следующей строки ничего не делает 3 раза, а затем прерывает бежать.
Я могу справиться с проблемой отладки, но было бы очень приятно работать в C++11 потоков.
1 ответов
исключения
см. этот ответ для всех трех моделей (dwarf, sjlj и seh).
темы
вы можете решить, какие потоки вы хотите использовать: потоки POSIX или потоки Windows API. Потоки posix имеют преимущество переносимости; вы можете использовать свой код на других платформах posix (например. Linux) без изменений. API потоков win32-это только windows. Если вы на 100% в windows и, как это api, это не проблема хотя.
если вы используете новые функции C++ как std::thread
влияние менее заметно, так как у вас уже есть стандартный api для потоковой передачи. Я не уверен, что есть действительно большая разница, если вы не используете posix- / win32 thread api напрямую (возможно,std::thread
родной ручки?)
Читайте также: MinGW-w64 темы: posix vs win32
построить редакции
Я думаю, что это просто еще один номер версии, так как Mingw (- w64) следует за версиями GCC (4.8.x, 4.9.X и т. д.). Если вам не нужна конкретная сборка, вы должны использовать последнюю версию.
вопрос резьбонарезной
если исключение:
terminate called after throwing an instance of 'std::system_error'
what(): Enable multithreading to use std::thread: Operation not permitted
потом просто ссылке pthreads не - и проблема решена.
рекомендация
если у вас нет причин использовать конкретный вариант; моя личная рекомендация:
posix - dwarf - 2
-
в POSIX включить C++11
<thread>
,<mutex>
и<future>
- гном быстрее
- 2 потому что это последняя версия