diff --git a/lib/cpp/src/concurrency/Mutex.cpp b/lib/cpp/src/concurrency/Mutex.cpp
index 0cfa0ad..332d415 100644
--- a/lib/cpp/src/concurrency/Mutex.cpp
+++ b/lib/cpp/src/concurrency/Mutex.cpp
@@ -154,6 +154,7 @@
     PROFILE_MUTEX_NOT_LOCKED();
     return false;
 #else
+    (void)milliseconds;
     // If pthread_mutex_timedlock isn't supported, the safest thing to do
     // is just do a nonblocking trylock.
     return trylock();
diff --git a/lib/cpp/src/server/TNonblockingServer.cpp b/lib/cpp/src/server/TNonblockingServer.cpp
index ba029a9..e8d0e71 100644
--- a/lib/cpp/src/server/TNonblockingServer.cpp
+++ b/lib/cpp/src/server/TNonblockingServer.cpp
@@ -866,7 +866,6 @@
   Guard g(connMutex_);
 
   // pick an IO thread to handle this connection -- currently round robin
-  assert(nextIOThread_ >= 0);
   assert(nextIOThread_ < ioThreads_.size());
   int selectedThreadIdx = nextIOThread_;
   nextIOThread_ = (nextIOThread_ + 1) % ioThreads_.size();
@@ -1158,7 +1157,7 @@
 
 void TNonblockingServer::stop() {
   // Breaks the event loop in all threads so that they end ASAP.
-  for (int i = 0; i < ioThreads_.size(); ++i) {
+  for (uint32_t i = 0; i < ioThreads_.size(); ++i) {
     ioThreads_[i]->stop();
   }
 }
@@ -1177,7 +1176,7 @@
     numIOThreads_ = DEFAULT_IO_THREADS;
   }
 
-  for (int id = 0; id < numIOThreads_; ++id) {
+  for (uint32_t id = 0; id < numIOThreads_; ++id) {
     // the first IO thread also does the listening on server socket
     int listenFd = (id == 0 ? serverSocket_ : -1);
 
@@ -1211,7 +1210,7 @@
     assert(ioThreadFactory_.get());
 
     // intentionally starting at thread 1, not 0
-    for (int i = 1; i < ioThreads_.size(); ++i) {
+    for (uint32_t i = 1; i < ioThreads_.size(); ++i) {
       shared_ptr<Thread> thread = ioThreadFactory_->newThread(ioThreads_[i]);
       ioThreads_[i]->setThread(thread);
       thread->start();
@@ -1223,7 +1222,7 @@
   ioThreads_[0]->run();
 
   // Ensure all threads are finished before exiting serve()
-  for (int i = 0; i < ioThreads_.size(); ++i) {
+  for (uint32_t i = 0; i < ioThreads_.size(); ++i) {
     ioThreads_[i]->join();
     GlobalOutput.printf("TNonblocking: join done for IO thread #%d", i);
   }
@@ -1353,6 +1352,7 @@
 void TNonblockingIOThread::notifyHandler(int fd, short which, void* v) {
   TNonblockingIOThread* ioThread = (TNonblockingIOThread*) v;
   assert(ioThread);
+  (void)which;
 
   while (true) {
     TNonblockingServer::TConnection* connection = 0;
diff --git a/lib/cpp/src/server/TNonblockingServer.h b/lib/cpp/src/server/TNonblockingServer.h
index 84e384c..9eedcee 100644
--- a/lib/cpp/src/server/TNonblockingServer.h
+++ b/lib/cpp/src/server/TNonblockingServer.h
@@ -170,7 +170,7 @@
   std::vector<boost::shared_ptr<TNonblockingIOThread> > ioThreads_;
 
   // Index of next IO Thread to be used (for round-robin)
-  int nextIOThread_;
+  uint32_t nextIOThread_;
 
   // Synchronizes access to connection stack and similar data
   Mutex connMutex_;
