Nie mogę powiedzieć na pewno, a to może nie być to, co chcesz usłyszeć, ale biorąc pod uwagę, że ostatnia wersja jest opatrzona datą 2006, byłbym bardzo ostrożny przy używaniu tego w najnowszych kompilatorach. Może pracować, ale prawdopodobnie będzie to zależało od Ciebie. Wydaje się, że jest dużo dyskusji na temat tego, jak działa to w Cygwin i MinGW, ale niewiele dla MSVC i nic nie ma. Mogę znaleźć poza MSVC2005.
Ponadto, jeśli przejrzysz archiwa CVS, istnieje kilka cennych plików, które zostały zaktualizowane w ciągu ostatniego roku (większość to dwa do pięciu lat temu). Para, która ma datę sprzed mniej niż roku, ma opis "Komentarze i zmiany stylu kodu", co prowadzi mnie do przekonania, że żadne z produktów nie było przez jakiś czas aktywnie rozwijane.
Teraz może się mylę i to jest po prostu niewiarygodnie dobrze napisany, stabilny produkt, ale moja wewnętrzna natura jest bardziej prawdopodobna, aby stwierdzić, że jest to jedna z bazilionów dobrych pomysłów, które odeszły z drogi.
I, patrząc na listy mailingowe, w ciągu pierwszych pięciu miesięcy 2010 r. Opublikowano tylko siedem wiadomości (najwcześniejsze z nich pozostały bez odpowiedzi przez cztery miesiące) i tylko 59 w całym 2009 r. Koloruj mnie sceptyczny, ale to nie wygląda na masywnie aktywną społeczność wsparcia.
Wydaje się, że patch dla 64-bitowego systemu Windows (patrz here w archiwum 2010), ale znowu, to wydaje się mieć problemy, które są bez odpowiedzi od lutego i to tylko wspomina o wsparcie dla MinGW:
... ta łatka (trochę szorstka i wymaga końcowego czyszczenia i trochę rozszerzenia do uruchomienia testowego makefile, aby umożliwić CROSS tutaj) umożliwia kompilację pthread dla celu x86_64-pc-mingw32.
To jest , a nie coś, czego użyłbym do mojego krytycznego oprogramowania.
Wiem, że oświadczyłeś, że nie jesteś zainteresowany ponownym wynalezieniem koła, ale możesz z łatwością wdrożyć blokady wielu czytników i zmienne warunkowe z bardziej podstawowych elementów pierwotnych - miałem nawet program do wielu czytników, który rozwiązał problem głodu napisać w sposób, który prawie dostał mi patent (nie, że zgadzam się z patentów na oprogramowanie, ale mój pracodawca twierdzi, że są wartościowe).
A jeśli tylko masz koło ma połowę swoich szprychy brakujące i jest strasznie odkształcone, może po prostu trzeba rozważyć :-)
W każdym razie, Vista i Server2k8 wprowadzone zarówno condition variables i slim reader/writer locks. Thread-local storage istnieje od Win2k. Wiem, że to nie pomoże, jeśli nadal będziesz musiał wspierać XP, ale będę patrzył w przyszłość.
A ponieważ zdaje się, że zdefiniowano przenośność jako "tylko dla systemu Windows", a wszystkie funkcje, które są dostępne, są dostępne w bieżących wersjach, nie jestem pewien, czy widzę przewagę, którą należy zachować przy użyciu pthreadów. Jeśli chcesz mieć możliwość przenoszenia do POSIX-a, to tak, ale nie wydaje się, żeby tak było w tym przypadku.
Przez ** ** przenośny znaczy tylko między wersjami systemu Windows? Jeśli tak, to trzymałbym się API kernel32. Czy istnieje znacząca przewaga przy użyciu pthread-win32? – jweyrich
@jweyrich. Mam na myśli, że mogę go używać z najnowszym MSVC-2008 & | Windows7 i | x86_64. I nie, używanie Win32 API nie jest opcją (brak konkretnych wskaźników wątku, brak blokad RW, żadnych zmiennych warunkowych itp.) – Artyom