Какая разница между thread_posixs и thread_win32 в gcc-порту окон?

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

  • потоки-POSIX
  • threads-win32

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

Ответ 1

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

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

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

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

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