
Peter Dimov ha escrito:
Joaquín Mª López Muñoz:
boost/detail/flyweight_mutex.hpp implements a mutex class based on a Win32 CRITICAL_SECTION or using Pthreads according to the following pp logic:
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) // based on CRITICAL_SECTION #elif defined(BOOST_HAS_PTHREADS) // based on Pthreads
The problem with this is that WIN32 and related macros are not predefined in some environments (Cygwin at least) but rather they are defined inside windows.h, thus making the logic above dependent on the inclusion context.
Would it help if we reverse the two tests?
AFAICS, yes. The complementary problem (selecting Pthreads in Win32 when <pthread.h> has been included) seems not to happen when the logic is reversed, at least with pthreads-win32, but further confirmation on this issue would be great. Joaquín M López Muñoz Telefónica, Investigación y Desarrollo