Портативность Pthreads-Win32 на различных компиляторах Windows

StackOverflow https://stackoverflow.com/questions/2797690

Вопрос

Я использую Pthreads-Win32, чтобы разрешить резьбу поддержки Windows.

У меня есть перекрестный проект платформы, который использует Pthreads, и я хочу сделать его работать на Windows с различными компиляторами и разными версиями ОС.

По крайней мере, в соответствии с документацией Pthreads-Win32 должен работать с MSVC и даже созданным MSVC.

Но я не знаю, проверена ли библиотека с последними компиляторами MSVC, такими как MSVC-2008, и если оно поддерживается под 64битом Windows.

От Ваш собственный опыт Вы знаете о любых проблемах с этой библиотекой?

  • Любые проблемы с MSVC8, MSVC9, MSVC10?
  • Любые проблемы с Windows X86_64?
  • Любые проблемы с Windows Vista / Windows 7?

Примечания:

  • Даже не пытайтесь рекомендовать использовать Boost.Thread, я не заинтересован. И я знаком с Boost.thread Библиотека
  • Я не заинтересован в восстановлении колеса с Win32 API (ему не хватает RW-замков, условные переменные и т. Д.).
  • Мне удалось скомпилировать проекты с MSVC-2008 и MINGW GCC-4.3, а затем проготайте тесты на него легко, используя ток предварительно скомпилированной DLL Pthreads.

Мне просто нужно знать ограничения Pthreads-Win32.

Это было полезно?

Решение

Хорошо, Paxdiablo. по-видимому, суммировал его здесь. Но из моего прошлого опыта с этой библиотекой я могу добавить пару вещей здесь.

Во-первых, я использовал подмножество функций библиотеки с помощью MSVC 2008 без каких-либо проблем.

Во-вторых, некоторые из моих коллег получили его на X86_64 (с MSVC2008 и MINGW). Они не сталкивались с какой-либо проблемой либо после многих циклов бета-тестирования бета и качества. Хотя я сам не проверил, поэтому не очень уверен на этом.

Так что по внешности вещей это может быть подходит для использования. Единственное предусмотренное здесь, если вы обнаружите, что вы обнаружите, что вы будете в Mercy не так активного списка рассылки (или, возможно, вы можете загрязнять ваши руки с исходным кодом или что-то в этом роде).

Другие советы

Не могу сказать наверняка, и это может быть не то, что вы хотите услышать, но, учитывая, что последний релиз устарел 2006, Я был бы очень настороженным об использовании этого в последних компиляторах. Это мая Работа, но, вероятно, будет до вас, чтобы понять это. Кажется, есть много дискуссий о том, что он работает в Cygwin и Mingw, но и драгоценно для MSVC, а также ничего Я могу найти за пределами msvc2005.

Кроме того, если вы изучите архивы CVS, существуют драгоценные несколько файлов, которые были обновлены в прошлом году (большинство из них два-пять лет назад). Пара, которые датированы менее чем в год назад, имеют описание «Комментарии и изменения в стиле кода», что приводит меня полагать, что ни одно из мяса продукта некоторое время не было активно развивается.

Теперь, возможно, я ошибаюсь, и это просто невероятно хорошо написанный, стабильный продукт, но моя внутренняя природа, скорее всего, заключит, что это одна из базиллей хороших идей, которые пошли на Уорот.

И, посмотрев на списки рассылки, в первые пять месяцев 2010 года размещены только семь сообщений (самый ранний из которых был без ответа в течение четырех месяцев) и всего 59 на весь 2009 год. Цвет меня скептически, но это Похоже, что массово оживленная поддержка сообщества.

Кажется, есть патч для 64-битных окон (см. здесь В архивах 2010 года) но, опять же, это, кажется, имеет проблемы, которые без ответа с февраля, и он только упоминает поддержку для Mingw:

... Этот патч (немного грубая и нуждается в некоторой окончательной уборке и некоторое расширение к тестовому пробежению Makefile для разрешения здесь) позволяет строить Pthread для построения для цели X86_64-PC-MingW32.

Это нет Что бы я использовал для моего критического программного обеспечения.

И я знаю, что вы заявили, что вы не заинтересованы в повторном изобретении колеса, но вы можете внедрить многосчитывающие замки и переменные условия из более простой примитивы - у меня даже была схема читателя, которая решила проблему голода Таким образом, что почти достал мне патент (не в том, что я согласен с патентами программного обеспечения, но мой работодатель настаивает, что они ценны).

И если единственное колесо у вас есть половина его спиц, пропавшими и ужасно согнуты из формы, вам может просто понадобиться :-)

В любом случае Vista и Server2k8 представили оба Переменные условия а также Тонкий читатель / писатель замки. Нить-локальное хранение был рядом с Win2k. Я знаю, что не поможет, если вам все еще нужно поддерживать XP, но я бы искал будущее.

И поскольку, поскольку вы, кажется, определили переносимость как «только для Windows», и все функции, которые вы нужны, доступны в текущих версиях, я не уверен, что вижу преимущество для прилипания с помощью Pthreads. Если вы хотите переносимость в Posix, да, но это не так, кажется, здесь.

Удивлен, что никто не предложил никто не предложил строительные блоки. Они очень активны и поддерживают практически все, с новейшим выпуском, являющимся менее чем двумя неделями назад, и функции C ++ 0x, если вы используете совместимый компилятор.

http://software.intel.com/en-us/intel-tbb/#sysreq.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top