// @(#)root/thread:$Id$
// Author: Fons Rademakers   01/07/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_TThreadFactory
#define ROOT_TThreadFactory

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TThreadFactory                                                       //
//                                                                      //
// This ABC is a factory for thread components. Depending on which      //
// factory is active one gets either Posix or Win32 threads.            //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TNamed
#include "TNamed.h"
#endif

class TMutexImp;
class TConditionImp;
class TThreadImp;
class TThread;

class TThreadFactory : public TNamed {

public:
   TThreadFactory(const char *name = "Unknown", const char *title = "Unknown Thread Factory");
   virtual ~TThreadFactory() { }

   virtual TMutexImp      *CreateMutexImp(Bool_t recursive) = 0;
   virtual TConditionImp  *CreateConditionImp(TMutexImp *m) = 0;
   virtual TThreadImp     *CreateThreadImp() = 0;

   ClassDef(TThreadFactory,0)  // Thread factory ABC
};

R__EXTERN TThreadFactory *gThreadFactory;

#endif



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