Changeset 377


Ignore:
Timestamp:
04/27/15 04:42:52 (7 years ago)
Author:
Maciej Komosinski
Message:

Included header for NULL

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpp/common/threads.h

    r371 r377  
    2424template<class T> class ThreadSingleton
    2525{
    26 pthread_key_t mt_key;
     26        pthread_key_t mt_key;
    2727
    28   public:
     28public:
    2929
    30 ThreadSingleton()
    31  {
    32  pthread_key_create(&mt_key,&destructor);
    33  }
     30        ThreadSingleton()
     31        {
     32                pthread_key_create(&mt_key, &destructor);
     33        }
    3434
    35 ~ThreadSingleton()
    36  {
    37  T* o=set(NULL);
    38  if (o) delete o;
    39  }
     35        ~ThreadSingleton()
     36        {
     37                T* o = set(NULL);
     38                if (o) delete o;
     39        }
    4040
    41 static void destructor(void* o)
    42  {
    43  if (o)
    44          delete (T*)o;
    45  }
     41        static void destructor(void* o)
     42        {
     43                if (o)
     44                        delete (T*)o;
     45        }
    4646
    47 T* set(T* new_o)
    48  {
    49  T* o=(T*)pthread_getspecific(mt_key);
    50  pthread_setspecific(mt_key,new_o);
    51  return o;
    52  }
     47        T* set(T* new_o)
     48        {
     49                T* o = (T*)pthread_getspecific(mt_key);
     50                pthread_setspecific(mt_key, new_o);
     51                return o;
     52        }
    5353
    54 T* get()
    55  {
    56  T* o=(T*)pthread_getspecific(mt_key);
    57  if (!o)
    58          {
    59          o=new T();
    60          pthread_setspecific(mt_key,o);
    61          }
    62  return o;
    63  }
     54        T* get()
     55        {
     56                T* o = (T*)pthread_getspecific(mt_key);
     57                if (!o)
     58                {
     59                        o = new T();
     60                        pthread_setspecific(mt_key, o);
     61                }
     62                return o;
     63        }
    6464
    65 T& getref() {return *get();}
     65        T& getref() { return *get(); }
    6666};
    6767
    6868template<class T> class ThreadSingletonPtr
    6969{
    70 pthread_key_t mt_key;
     70        pthread_key_t mt_key;
    7171
    72   public:
     72public:
    7373
    74 ThreadSingletonPtr()
    75  {
    76  pthread_key_create(&mt_key,NULL);
    77  }
     74        ThreadSingletonPtr()
     75        {
     76                pthread_key_create(&mt_key, NULL);
     77        }
    7878
    79 T* setptr(T* new_o)
    80  {
    81  T* o=(T*)pthread_getspecific(mt_key);
    82  pthread_setspecific(mt_key,new_o);
    83  return o;
    84  }
     79        T* setptr(T* new_o)
     80        {
     81                T* o = (T*)pthread_getspecific(mt_key);
     82                pthread_setspecific(mt_key, new_o);
     83                return o;
     84        }
    8585
    86 T* get()
    87  {
    88  return (T*)pthread_getspecific(mt_key);
    89  }
     86        T* get()
     87        {
     88                return (T*)pthread_getspecific(mt_key);
     89        }
    9090};
    9191
    9292#else //ifdef MULTITHREADED
     93
     94#include <cstddef> //NULL
    9395
    9496#define tlsGet(var) (&ThreadLocal_ ## var ## _getref())
     
    105107template<class T> class ThreadSingletonPtr
    106108{
    107 T *object;
    108   public:
    109 ThreadSingletonPtr():object(NULL) {}
    110 T* get() {return object;}
    111 T* setptr(T* o) {T* previous=object; object=o; return previous;}
     109        T *object;
     110public:
     111        ThreadSingletonPtr():object(NULL) {}
     112        T* get() {return object;}
     113        T* setptr(T* o) {T* previous=object; object=o; return previous;}
    112114};
    113115
     
    131133template<class T> T* _tlsGet(T*& var)
    132134{
    133 if (!var)
    134         var=new T();
    135 return var;
     135        if (!var)
     136                var=new T();
     137        return var;
    136138}
    137139
    138140template<class T> T* _tlsGetPtr(T*& var)
    139141{
    140 return var;
     142        return var;
    141143}
    142144
     
    146148template<class T> T* _tlsSet(T*& var,T* new_o)
    147149{
    148 T* o=var;
    149 var=new_o;
    150 return o;
     150        T* o=var;
     151        var=new_o;
     152        return o;
    151153}
    152154
Note: See TracChangeset for help on using the changeset viewer.