Fang Ausnahme vom worker-thread in den Haupt-thread

Habe ich nicht, eine schlüssige Antwort zu dem folgenden problem:ich habe eine Erzeuger - Verbraucher-threading-Modell aus, in dem Haupt-thread ist der Verbraucher während einige worker-thread ist der Produzent.Der Erzeuger-thread ausgeführt wird, es ist thread-Schleife während der Ausführung der Anwendung und es ist möglich, dass es Ausnahmen gelegentlich.Der Haupt-thread UI-thread, die sollten pop-up-Ausnahme-Nachrichten, einschließlich diejenigen, die aus verschiedenen threads. Wie kann ich diese abfangen von Ausnahmen in main thread?

Verwendung von boost unter Windows mit C++0x

WorkerThread.cpp

WorkerThread::WorkerThread(){

   m_thread = boost::thread(&WorkerThread::drawThread,this);

}

void WorkerThread::drawThread()
{

         while(true)
         {
             boost::unique_lock<boost::mutex> lock(m_mutex);
              try{

                ///some work is done here...

              }catch(std::exception &e){

               ///some exception is thrown
               ///notify main thread of the exception
              }

         }


 }

Wichtig zu beachten, dass ich keine Möglichkeit zum wickeln WorkerThread in der main-thread mit try{}catch, wie es erstellt wird an einem gewissen Punkt und von da an läuft auf seine eigene, bis der Programmabbruch.

  • Liebes internet, Sie brauchen nicht zu verwenden bind mit thread. Nur sagen m_thread = boost::thread(&WorkerThread::drawThread, this);
  • Danke für den Tipp 🙂
InformationsquelleAutor Michael IV | 2014-08-13
Schreibe einen Kommentar