--- C:\boost\boost_1_47_0\boost\asio\detail\impl\socket_ops.ipp 2011-06-05 16:21:43.000000000 -0700 +++ C:\boost\boost_1_47_0_mod\boost\asio\detail\impl\socket_ops.ipp 2011-07-19 08:50:57.000000000 -0700 @@ -23,12 +23,13 @@ #include #include #include #include #include +#include #include namespace boost { namespace asio { namespace detail { namespace socket_ops { @@ -2771,18 +2772,16 @@ #else sprintf(serv, "%u", ntohs(port)); #endif } else { -#if defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS) \ - && !defined(BOOST_ASIO_DISABLE_THREADS) - static ::pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; - ::pthread_mutex_lock(&mutex); -#endif // defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS) - // && !defined(BOOST_ASIO_DISABLE_THREADS) +#if !defined(BOOST_WINDOWS) + static boost::asio::detail::mutex mutex; + boost::asio::detail::mutex::scoped_lock lock(mutex); +#endif // !defined(BOOST_WINDOWS) servent* sptr = ::getservbyport(port, (flags & NI_DGRAM) ? "udp" : 0); if (sptr && sptr->s_name && sptr->s_name[0] != '\0') { gai_strcpy(serv, sptr->s_name, servlen); } else @@ -2794,17 +2793,12 @@ #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(UNDER_CE) sprintf_s(serv, servlen, "%u", ntohs(port)); #else sprintf(serv, "%u", ntohs(port)); #endif } -#if defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS) \ - && !defined(BOOST_ASIO_DISABLE_THREADS) - ::pthread_mutex_unlock(&mutex); -#endif // defined(BOOST_HAS_THREADS) && defined(BOOST_HAS_PTHREADS) - // && !defined(BOOST_ASIO_DISABLE_THREADS) } } ec = boost::system::error_code(); return ec; }