Ejemplo n.º 1
0
 inline void joinThreads() const
 {
     while (!thr()->empty()) {
         driver->runningThreads.front()->join();
         unregisterThread(driver->runningThreads.front());
     }
 }
Ejemplo n.º 2
0
void ThreadManager::join(std::thread& thread)
{
	if(thread.joinable())
	{
		thread.join();
		unregisterThread();
	}
}
Ejemplo n.º 3
0
ThreadSGI::~ThreadSGI()
{
   ThreadManager::instance()->lock();
   {
      unregisterThread();
   }
   ThreadManager::instance()->unlock();
}
Ejemplo n.º 4
0
// Destructor.
ThreadPosix::~ThreadPosix()
{
   // TELL EVERYONE THAT WE'RE DEAD!!!!
   ThreadManager::instance()->lock();      // Lock manager
   {
      unregisterThread();                  // Finish thread deallocation
   }
   ThreadManager::instance()->unlock();
}
Ejemplo n.º 5
0
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);
}