--- a/src/signaler.cpp +++ b/src/signaler.cpp @@ -86,7 +86,8 @@ static int sleep_ms (unsigned int ms_) usleep (ms_ * 1000); return 0; #else - return usleep (ms_ * 1000); + const struct timespec req = {0, (long int)ms_ * 1000 * 1000}; + return nanosleep (&req, NULL); #endif } --- a/src/tcp_address.cpp +++ b/src/tcp_address.cpp @@ -29,6 +29,7 @@ #include #include +#include #include "tcp_address.hpp" #include "platform.hpp" @@ -194,7 +195,8 @@ int zmq::tcp_address_t::resolve_nic_name (const char *nic_, bool ipv6_, bool is_ rc = getifaddrs (&ifa); if (rc == 0 || (rc < 0 && errno != ECONNREFUSED)) break; - usleep ((backoff_msec << i) * 1000); + const struct timespec req = {0, (backoff_msec << i) * 1000 * 1000}; + nanosleep (&req, NULL); } errno_assert (rc == 0); zmq_assert (ifa != NULL); --- a/src/zmq.cpp +++ b/src/zmq.cpp @@ -692,7 +692,8 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_) usleep (timeout_ * 1000); return 0; #else - return usleep (timeout_ * 1000); + const struct timespec req = {0, timeout_ * 1000 * 1000}; + return nanosleep (&req, NULL); #endif } @@ -852,7 +853,8 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_) Sleep (timeout_ > 0 ? timeout_ : INFINITE); return 0; #else - return usleep (timeout_ * 1000); + const struct timespec req = {0, timeout_ * 1000 * 1000}; + return nanosleep (&req, NULL); #endif } zmq::clock_t clock;