|
|
@ -0,0 +1,54 @@ |
|
|
|
--- 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 <string> |
|
|
|
#include <sstream> |
|
|
|
+#include <ctime>
|
|
|
|
|
|
|
|
#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; |