Невозможно сказать наверняка, и это может быть не то, что вы хотите услышать, но, учитывая, что последний выпуск датирован 2006, я бы очень осторожно использовал это в последних компиляторах. Это может работать, но это, вероятно, будет зависеть от вас, чтобы это произошло. Там, кажется, много дискуссий о том, чтобы заставить его работать в Cygwin и MinGW, но очень мало для MSVC, а ничего Я могу найти за пределами MSVC2005.
Кроме того, если вы изучите архивы CVS, в прошлом году было исправлено несколько незначительных файлов (большинство из них два-пять лет назад). Пары, датированные менее года назад, имеют описание «Комментарии и изменения стиля кода», что заставляет меня думать, что ни одно из мяса продукта не находилось в активном развитии какое-то время.
Теперь, может быть, я ошибаюсь, и это просто невероятно хорошо написанный, стабильный продукт, но моя внутренняя природа с большей вероятностью завершит его одним из базой хороших идей, которые прошли на обочине.
И, взглянув на списки рассылки, в течение первых пяти месяцев 2010 года было опубликовано всего семь сообщений (самый ранний из которых был без ответа в течение четырех месяцев) и всего 59 на весь 2009 год. Цвет меня скептически, но это не похоже на массовое сообщество поддержки.
Там, кажется, патч для 64-разрядной ОС Windows (см here в 2010 архивах), но, опять-таки, это, кажется, есть проблемы, которые без ответа с февраля и в нем упоминается только поддержка MinGW:
... этот патч (немного грубый и нуждается в некоторой окончательной очистке и некотором расширении к make-файлу тестового запуска для разрешения CROSS здесь) позволяет строить pthread для цели x86_64-pc-mingw32.
Это не вид вещи, я бы использовать для моего критически важного программного обеспечения.
И я знаю, что вы заявили, что вам не интересно заново изобретать колесо, но вы можете легко реализовать блокировки и переменные с несколькими считывателями из более простых примитивов - у меня даже была схема множественного чтения, которая была решена проблемы с голодной записью таким образом, что я получил патент (не согласен с патентами на программное обеспечение, но мой работодатель настаивает на том, что они ценны).
И если только колеса у вас есть имеет половину своих спиц недостающие и ужасно изогнутую форму, вы можете просто нужно пересмотреть :-)
В любом случае, Vista и Server2k8 введены как condition variables и slim reader/writer locks. Thread-local storage существует со времен Win2k. Я знаю, что это не поможет, если вам все еще нужно поддерживать XP, но я буду смотреть в будущее.
И поскольку вы, кажется, определили переносимость как «только для Windows», и все функции, которые вы хотите, доступны в текущих версиях, я не уверен, что вижу преимущество в том, чтобы придерживаться pthreads. Если вам нужна переносимость POSIX, да, но это, похоже, не так.
От ** переносной ** вы имеете в виду только между версиями Windows? Если это так, я буду придерживаться API-интерфейса kernel32. Или существует сильное преимущество использования pthread-win32? – jweyrich
@jweyrich. Я имею в виду, что могу использовать его с последними MSVC-2008 & | Windows7 & | x86_64. И нет, использование Win32 API не является опцией (никаких указателей, специфичных для потока, без RW-Locks, без условных переменных и т. Д.) – Artyom