THRIFT-736. cpp: Check for availability of pthread_mutex_timedlock

r920679 introduced a call to pthread_mutex_timedlock, which is not
available on all UNIX variants.  In particular, it is missing on Mac OS.
Add a preprocessor check for the relevant feature macro.  If it fails,
just use a trylock.

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@925940 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/cpp/src/concurrency/Mutex.cpp b/lib/cpp/src/concurrency/Mutex.cpp
index d72267d..6d71710 100644
--- a/lib/cpp/src/concurrency/Mutex.cpp
+++ b/lib/cpp/src/concurrency/Mutex.cpp
@@ -135,6 +135,7 @@
   bool trylock() const { return (0 == pthread_mutex_trylock(&pthread_mutex_)); }
 
   bool timedlock(int64_t milliseconds) const {
+#if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 200112L
     PROFILE_MUTEX_START_LOCK();
 
     struct timespec ts;
@@ -147,6 +148,11 @@
 
     PROFILE_MUTEX_NOT_LOCKED();
     return false;
+#else
+    // If pthread_mutex_timedlock isn't supported, the safest thing to do
+    // is just do a nonblocking trylock.
+    return trylock();
+#endif
   }
 
   void unlock() const {