Boost logo

Boost Users :

Subject: Re: [Boost-users] Threads and virtual functions
From: bit bit (g_rambot_at_[hidden])
Date: 2011-07-07 00:19:49


make sure that you join on the thread or else the thread object might be destructed before the thread having finished.

Date: Thu, 7 Jul 2011 00:19:14 +0200
From: geoffrey_at_[hidden]
To: boost-users_at_[hidden]
Subject: [Boost-users] Threads and virtual functions

  

    
  
  
    Hello,
      

      here is a simplified code I wrote:
      

      

      class A{
      

      public:
      

          A();
      

          ~A();
      

          void Run();
      

          void ThreadA();
      

          virtual void HandleSomething();
      

      };
      

      

      void A::HandleSomething()
      

      {
      

      

      }
      

      

      void A::ThreadA()
      

      {
      

          if(condition)
      

          {
      

              HandleSomething();
      

          }
      

      }
      

      

      void A::Run()
      

      {
      

          boost::thread thread(&A::ThreadA,this);
      

      }
      

      

      This is my base class. As you can see the thread calls the virtual
      function when the condition becomes true. I use the virtual
      function in my derived class so everytime the condition becomes
      true the function HandleSomething() should do something. So far,
      so good but when I try to change some variables in the derived
      class the program crashes without any warning or error message. I
      use the latest Ubuntu version with GCC 4.5.3 and boost 1.46.1.
      

    
  

_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net