// @(#)root/base:$Id$
// Author: Fons Rademakers   14/02/2002

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TVirtualMutex                                                        //
//                                                                      //
// This class implements a mutex interface. The actual work is done via //
// TMutex which is available as soon as the thread library is loaded.   //
//                                                                      //
// and                                                                  //
//                                                                      //
// TLockGuard                                                           //
//                                                                      //
// This class provides mutex resource management in a guaranteed and    //
// exception safe way. Use like this:                                   //
// {                                                                    //
//    TLockGuard guard(mutex);                                          //
//    ... // do something                                               //
// }                                                                    //
// when guard goes out of scope the mutex is unlocked in the TLockGuard //
// destructor. The exception mechanism takes care of calling the dtors  //
// of local objects so it is exception safe.                            //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TVirtualMutex.h"

ClassImp(TVirtualMutex)
ClassImp(TLockGuard)

// Global mutex set in TThread::Init protecting creation
// of other (preferrably local) mutexes. Note that in this
// concept gGlobalMutex must be used in TStorage to prevent 
// lockup of the system (see TMutex::Factory)
TVirtualMutex *gGlobalMutex = 0;
 TVirtualMutex.cxx:1
 TVirtualMutex.cxx:2
 TVirtualMutex.cxx:3
 TVirtualMutex.cxx:4
 TVirtualMutex.cxx:5
 TVirtualMutex.cxx:6
 TVirtualMutex.cxx:7
 TVirtualMutex.cxx:8
 TVirtualMutex.cxx:9
 TVirtualMutex.cxx:10
 TVirtualMutex.cxx:11
 TVirtualMutex.cxx:12
 TVirtualMutex.cxx:13
 TVirtualMutex.cxx:14
 TVirtualMutex.cxx:15
 TVirtualMutex.cxx:16
 TVirtualMutex.cxx:17
 TVirtualMutex.cxx:18
 TVirtualMutex.cxx:19
 TVirtualMutex.cxx:20
 TVirtualMutex.cxx:21
 TVirtualMutex.cxx:22
 TVirtualMutex.cxx:23
 TVirtualMutex.cxx:24
 TVirtualMutex.cxx:25
 TVirtualMutex.cxx:26
 TVirtualMutex.cxx:27
 TVirtualMutex.cxx:28
 TVirtualMutex.cxx:29
 TVirtualMutex.cxx:30
 TVirtualMutex.cxx:31
 TVirtualMutex.cxx:32
 TVirtualMutex.cxx:33
 TVirtualMutex.cxx:34
 TVirtualMutex.cxx:35
 TVirtualMutex.cxx:36
 TVirtualMutex.cxx:37
 TVirtualMutex.cxx:38
 TVirtualMutex.cxx:39
 TVirtualMutex.cxx:40
 TVirtualMutex.cxx:41
 TVirtualMutex.cxx:42
 TVirtualMutex.cxx:43
 TVirtualMutex.cxx:44