Re: RE:[CINT] [ROOT] Problems with CINT (fwd)

From: Valeri Fine (fine@bnl.gov)
Date: Thu May 02 2002 - 20:47:30 MEST


> This is only for typing exit() on the cint command line. The behaviour
> is the same as typing .q except that the exit() argument is passed back
> to the shell, which is needed in shell scripts where one wants to test
> for script exit status. If you want to handle multiple threads you will
> have to do that in your code.

  How ? 
  How the user's thread knows it is about to be killed due the entire process 
  is about to be killed ? And how the proper termination order are supposed 
  to be set  ? (Yes, it is not solely the "exit(0)" function issue).

                                      Valeri
> -- Fons
> 
> 
> 
> On Thu, 2002-05-02 at 19:08, Valeri Fine wrote:
> > Hello Fons,
> > 
> > What about multithread env. Is there any assumption of the order the different 
> > threads are terminated.
> > 
> > For example if "GUI" thread  would be  terminated and then another thread deletes 
> > some TCanvas then we may have ROOT crashed (after exit)
> > 
> >  I believe to deal with thread ROOT have to define:
> > 
> >    1.  a ROOT main thread (that should be terminated last) and that should instantiate other threads.
> >    2.  "base" thread class and a container of the "threads" to be able 
> >        to get a control and terminated it in the proper order if needed.
> > 
> >                Valeri
> > -----
> > Dr.Valeri Fine
> > STAR/US Atlas                                    E-mail: fine@bnl.gov
> > Brookhaven National Lab                Phone: +1 631 344 7806
> > Upton, NY 11973-5000                       FAX:     +1 631 344 4206
> > USA
> > 
> > 
> > 
> > ----- Original Message ----- 
> > From: "Fons Rademakers" <Fons.Rademakers@cern.ch>
> > To: "Masaharu Goto" <MXJ02154@nifty.ne.jp>
> > Cc: "Rene Brun" <Rene.Brun@cern.ch>; <dbertini@lxg0402.gsi.de>; <cint@pcroot.cern.ch>; <roottalk@pcroot.cern.ch>
> > Sent: Thursday, May 02, 2002 5:48 AM
> > Subject: Re: RE:[CINT] [ROOT] Problems with CINT (fwd)
> > 
> > 
> > > Hi Masa,
> > > 
> > >    exit() is now implemented in ROOT and it exits to the shell
> > > propagating the value passed to exit() to the shell.
> > > 
> > > -- Fons.
> > > 
> > > 
> > > On Thu, 2002-05-02 at 11:29, Masaharu Goto wrote:
> > > > Hello Denis,
> > > > 
> > > > Thank you for reporting this problem.  I'll fix the problem 1) 
> > > > in cint5.15.37.  For 2), we need to discuss how exit() should 
> > > > behave in ROOT.
> > > > 
> > > > Masaharu Goto
> > > > 
> > > > 
> > > > 
> > > > >Date: Tue, 30 Apr 2002 23:37:51 +0200 (METDST)
> > > > >From: Rene Brun <Rene.Brun@cern.ch>
> > > > >To: cint@pcroot.cern.ch
> > > > >Subject: [CINT] [ROOT] Problems with CINT  (fwd)
> > > > >
> > > > >
> > > > >
> > > > >---------- Forwarded message ----------
> > > > >Date: Tue, 30 Apr 2002 20:08:57 +0200 (CEST)
> > > > >From: Denis Bertini <dbertini@lxg0402.gsi.de>
> > > > >To: roottalk@cern.ch
> > > > >Subject: [ROOT] Problems with CINT 
> > > > >
> > > > >
> > > > > Hi Rooters, 
> > > > > 
> > > > > 
> > > > > 1)
> > > > >
> > > > > I am facing a problem to access the pointers in my 
> > > > > event structure via CINT. I think it link to the way 
> > > > > CINT interprets level of indirection. 
> > > > > Let me explain briefly: 
> > > > > I have th following class "Composite"
> > > > > 
> > > > >     class Composite: public Element
> > > > >      {
> > > > >      protected:
> > > > >      TObjArray *fEventElements;
> > > > >     // something ... 
> > > > >           
> > > > >     // specific [] operator 
> > > > >     Element& operator[](Int_t i) {
> > > > >      return *static_cast<TGo4EventElement*>((*fEventElements)[i]);
> > > > >    //something
> > > > >     };
> > > > >   
> > > > >   Now with this overloaded [] operator i want to access my pointers, 
> > > > >   using macros commands like:
> > > > >    {
> > > > >      Composite * event = new Composite(); 
> > > > >      // .. initialize my structure composite
> > > > >      // access one element  
> > > > >      Element* sub_event= &(*event)[i][j][k];
> > > > >    }  
> > > > > 
> > > > >   I tested this access with pure compiled C++ code and it works fine. 
> > > > >   But, CINT can only access (using this syntax) one level of indirection. 
> > > > >   I need to do explicitely the following trick:
> > > > > 
> > > > >    {
> > > > >      Composite * event = new Composite();
> > > > >      // .. initialize my structure composite
> > > > >      // access one element
> > > > >      Element* sub_event= &(((*event)[i])
> > > > >                            .operator[](j))
> > > > >                            .operator[](k);     
> > > > >     }
> > > > >   ... in order to get the correct result. But it is not very nice !
> > > > >
> > > > >    So what am i doing wrong there?  
> > > > >                                            
> > > > >   2) In the last version of CINT (ROOT 303.04 22 April 2002) the
> > > > >      command exit(0) hangs for ever. In root 303.02 it was working 
> > > > >      correclty. 
> > > > >      
> > > > >                                 any hints ? 
> > > > >                                            thanks
> > > > >                                               Denis
> > > > >
> > > -- 
> > > Org:    CERN, European Laboratory for Particle Physics.
> > > Mail:   1211 Geneve 23, Switzerland
> > > E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
> > > WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7679480
> > > 
> -- 
> Org:    CERN, European Laboratory for Particle Physics.
> Mail:   1211 Geneve 23, Switzerland
> E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
> WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7679480
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:52 MET