В чем разница между thread_posixs и thread_win32 в gcc-порте Windows?

Я хотел скачать последнюю доступную версию gcc 4.7.2 Компилятор для Windows.
Когда я попал на эту страницу, где я должен был увидеть ссылку на скачивание, я столкнулся с двумя категориями:

  1. темы-POSIX
  2. резьба-win32

Какая разница между этими двумя?
Являются ли они только потоковыми реализациями? Я имею в виду, что они отличаются только тем, как они реализованы, и, таким образом, конечный результат (классы, как их использовать и т. Д.) Остается тем же самым?
Или они навязывают определенный стиль кодирования?

1 ответ

Решение

Итак, ссылка, которую вы указали, ведет к сборке автономного gcc 4.7.2 для windows, он же mingw64. Для построения этого компилятора используется набор скриптов, которые помогают определить параметры компиляции. Сценарии просто называются MinGW-сборками и могут быть найдены в разных местах:

В сценариях есть опция, которая указывает, какую модель потока следует использовать для части std::threads стандарта C++11 (это разрешено для MinGW благодаря экспериментальному патчу, примененному к этой версии GCC). В одном случае используется API-интерфейс потока win32, а в другом - API-интерфейс posix.

Обратите внимание, что Windows не поддерживает все POSIX API из коробки, поэтому необходимо использовать некоторую внешнюю библиотеку эмуляции (winpthreads).

Сценарий настройки исходного кода GCC имеет возможность указать этот API (--enable-threads=), и именно это используется в сценариях сборки.

Короче говоря, для этой версии mingw в выпуске threads-posix будет использоваться API posix и разрешено использование std:: thread, а в thread -win32 будет использоваться API win32, и будет отключена часть std:: thread стандарт.

Другие вопросы по тегам