void internalCallbackQueueThreadFunc() { disableAllSignalsInThisThread(); CallbackQueuePtr queue = getInternalCallbackQueue(); while (!g_shutting_down) { queue->callAvailable(WallDuration(0.1)); } }
void PollManager::threadFunc() { disableAllSignalsInThisThread(); while (!shutting_down_) { { boost::recursive_mutex::scoped_lock lock(signal_mutex_); poll_signal_(); } if (shutting_down_) { return; } poll_set_.update(10); } }
void AsyncSpinnerImpl::threadFunc() { disableAllSignalsInThisThread(); CallbackQueue* queue = callback_queue_; bool use_call_available = thread_count_ == 1; WallDuration timeout(0.1); while (continue_ && nh_.ok()) { if (use_call_available) { queue->callAvailable(timeout); } else { queue->callOne(timeout); } } }
void XMLRPCManager::serverThreadFunc() { disableAllSignalsInThisThread(); while(!shutting_down_) { { boost::mutex::scoped_lock lock(added_connections_mutex_); S_ASyncXMLRPCConnection::iterator it = added_connections_.begin(); S_ASyncXMLRPCConnection::iterator end = added_connections_.end(); for (; it != end; ++it) { (*it)->addToDispatch(server_.get_dispatch()); connections_.insert(*it); } added_connections_.clear(); } // Update the XMLRPC server, blocking for at most 10ms in select() { boost::mutex::scoped_lock lock(functions_mutex_); server_.work(0.01); } while (unbind_requested_) { WallDuration(0.01).sleep(); } if (shutting_down_) { return; } { S_ASyncXMLRPCConnection::iterator it = connections_.begin(); S_ASyncXMLRPCConnection::iterator end = connections_.end(); for (; it != end; ++it) { if ((*it)->check()) { removeASyncConnection(*it); } } } { boost::mutex::scoped_lock lock(removed_connections_mutex_); S_ASyncXMLRPCConnection::iterator it = removed_connections_.begin(); S_ASyncXMLRPCConnection::iterator end = removed_connections_.end(); for (; it != end; ++it) { (*it)->removeFromDispatch(server_.get_dispatch()); connections_.erase(*it); } removed_connections_.clear(); } } }