inline void joinThreads() const { while (!thr()->empty()) { driver->runningThreads.front()->join(); unregisterThread(driver->runningThreads.front()); } }
void ThreadManager::join(std::thread& thread) { if(thread.joinable()) { thread.join(); unregisterThread(); } }
ThreadSGI::~ThreadSGI() { ThreadManager::instance()->lock(); { unregisterThread(); } ThreadManager::instance()->unlock(); }
// Destructor. ThreadPosix::~ThreadPosix() { // TELL EVERYONE THAT WE'RE DEAD!!!! ThreadManager::instance()->lock(); // Lock manager { unregisterThread(); // Finish thread deallocation } ThreadManager::instance()->unlock(); }
void ClientManager::handle(const std::shared_ptr<ClientsMap <int, ClientManager *>> &blockingMap) { registerThread(blockingMap); logger->log("Created"); std::thread socketListenerThread(&SocketListener::handle, socketListener); std::thread senderThread(&Sender::handle, sender); socketListenerThread.join(); sender->setConnectionClosed(); senderThread.join(); deleteClient(); unregisterThread(blockingMap); }