[ROOT] Help with Threads...

From: Sergio Luiz Carmelo Barroso - posdoc (barroso@ifi.unicamp.br)
Date: Fri Oct 11 2002 - 00:39:28 MEST


Dear All,

I need some help with TThreads. I read the page at 

http://www-linux.gsi.de/~go4/HOWTOthreads/howtothreadsbody.html

but I'm still lost. I wrote two pieces of code (They are at the end of the 
message). I am trying to use then outside CINT. To compile and link I did:

g++ `root-config --cflags` -o test05.exe test05.cc  `root-config --libs` 
-lThread

And the application test05.exe is produced without any errors or warnings. 
The application also runs without errors but the "myThread->Run();" 
apparently is not working, because I do not see the output of the cout 
statements inside the function "doit".

Could someone please help me? I am using ROOT v3.02/07.

Thanks a lot,

Sergio


--------------------------------------------------------
// header file test05.h 
#include "TApplication.h"
#include "TROOT.h"
#include "TThread.h"
#include <stream.h>

class ThreadPar {
 
 public:
  int count;
  char *argv;

  ThreadPar() { count = 0; argv = NULL;}
  ~ThreadPar();
};

void *doit(void *myPar) {  
  
  TThread::Lock();
  cout <<  "Inside MyThread\n"; 
  ThreadPar *myTPar = (ThreadPar *) myPar;
  if (myPar) {
    for(int i=0;i<=5;i++) {
      cout << myTPar->count << ", " << myTPar->argv << "===>" << i << 
endl; 
    }
  }else {
    cout << "myPar is null.\n";
  }
  TThread::UnLock();
  return 0;
}

--------------------------------------------------------------------------

// test05.cc
#include "test05.h"

int main(int argc, char **argv){
  
  ThreadPar *myThreadPar = new ThreadPar();
  TThread *myThread = new TThread("MyThread",doit,(void *) 
myThreadPar);
  for (int j=0;j<argc;j++) {
    myThreadPar->count = j;
    myThreadPar->argv = argv[j];
    cout <<"Calling MyThread " << j << '\t' << argv[j] << endl;
    myThread->Run();
  }
  return 0;
}



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