ROOT logo
// @(#)root/thread:$Id$
// Author: Victor Perev   10/08/97

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TThreadImp
#define ROOT_TThreadImp


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TThreadImp                                                           //
//                                                                      //
// This class implements threads. A thread is an execution environment  //
// much lighter than a process. A single process can have multiple      //
// threads. The actual work is done via the TThreadImp class (either    //
// TPosixThread or TWin32Thread).                                       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TObject
#include "TObject.h"
#endif
#ifndef ROOT_TThread
#include "TThread.h"
#endif

class TThreadImp : public TObject {
public:
   TThreadImp() { }
   virtual ~TThreadImp() { }

   virtual Int_t  Join(TThread *th, void **ret) = 0;
   virtual Long_t SelfId() = 0;
   virtual Int_t  Run(TThread *th) = 0;

   virtual Int_t  Kill(TThread *th) = 0;
   virtual Int_t  SetCancelOff() = 0;
   virtual Int_t  SetCancelOn() = 0;
   virtual Int_t  SetCancelAsynchronous() = 0;
   virtual Int_t  SetCancelDeferred() = 0;
   virtual Int_t  CancelPoint() = 0;
   virtual Int_t  CleanUpPush(void **main, void *free,void *arg) = 0;
   virtual Int_t  CleanUpPop(void **main, Int_t exe) = 0;
   virtual Int_t  CleanUp(void **main) = 0;

   virtual Int_t  Exit(void *ret) = 0;

   ClassDef(TThreadImp,0)  // ThreadImp class
};

#endif
 TThreadImp.h:1
 TThreadImp.h:2
 TThreadImp.h:3
 TThreadImp.h:4
 TThreadImp.h:5
 TThreadImp.h:6
 TThreadImp.h:7
 TThreadImp.h:8
 TThreadImp.h:9
 TThreadImp.h:10
 TThreadImp.h:11
 TThreadImp.h:12
 TThreadImp.h:13
 TThreadImp.h:14
 TThreadImp.h:15
 TThreadImp.h:16
 TThreadImp.h:17
 TThreadImp.h:18
 TThreadImp.h:19
 TThreadImp.h:20
 TThreadImp.h:21
 TThreadImp.h:22
 TThreadImp.h:23
 TThreadImp.h:24
 TThreadImp.h:25
 TThreadImp.h:26
 TThreadImp.h:27
 TThreadImp.h:28
 TThreadImp.h:29
 TThreadImp.h:30
 TThreadImp.h:31
 TThreadImp.h:32
 TThreadImp.h:33
 TThreadImp.h:34
 TThreadImp.h:35
 TThreadImp.h:36
 TThreadImp.h:37
 TThreadImp.h:38
 TThreadImp.h:39
 TThreadImp.h:40
 TThreadImp.h:41
 TThreadImp.h:42
 TThreadImp.h:43
 TThreadImp.h:44
 TThreadImp.h:45
 TThreadImp.h:46
 TThreadImp.h:47
 TThreadImp.h:48
 TThreadImp.h:49
 TThreadImp.h:50
 TThreadImp.h:51
 TThreadImp.h:52
 TThreadImp.h:53
 TThreadImp.h:54
 TThreadImp.h:55
 TThreadImp.h:56
 TThreadImp.h:57
 TThreadImp.h:58