SysThreadLocalPtr.h

См. документацию.
00001 /*
00002  * CntmLib - Подсчет ссылок, потоки, синхронизация, асинхронные процедуры, события
00003  * Copyright (c) 2005, Овсеевич Роман, CntmLib@mail.ru
00004  * _______________________________________________________________________________
00005  * Разрешено свободное использование, копирование, распространение, изменение
00006  * (изменение сведений об авторских правах запрещено). Запрещена продажа и 
00007  * включение всей библиотеки или ее частей в другие библиотеки. В сведениях об
00008  * авторских правах на программу (или сведениях о программе, об авторах, 
00009  * использованных средствах разработки и т.д.) должна быть указана информация
00010  * о библиотеке CntmLib, ее авторе и, возможно, сайте или email'е.
00011  * Библиотека поставляется "как есть", без каких-либо гарантий со стороны автора.
00012  */ 
00013 
00014 #ifndef CNTM_SYSTHREADLOCALPTR_H
00015 #define CNTM_SYSTHREADLOCALPTR_H
00016 #include <pthread.h>
00017 #include <boost/utility.hpp>
00018 
00019 namespace Cntm
00020 {
00021         namespace SpecUtils
00022         {
00023         
00024                 /**
00025                  * Локальная потоковая переменная. Содержит указатель типа void*. Начальное значение для каждого потока равно NULL.
00026                  *
00027                  * Объекты данного класса обычно располагаются в статической памяти, чтобы локальная потокая переменная была доступна на всем протяжении выполнения программы.
00028                  * @author Овсеевич Р.
00029                  * \ingroup SystemUtils
00030                  */
00031                 class SysThreadLocalPtr: boost::noncopyable
00032                 {
00033                 public:
00034 
00035                         /**
00036                          * Конструктор.
00037                          */
00038                         SysThreadLocalPtr() { pthread_key_create(&key, NULL); }
00039 
00040                         /**
00041                          * Деструктор.
00042                          */
00043                         ~SysThreadLocalPtr() { pthread_key_delete(key); }
00044 
00045                         /**
00046                          * Получить значение указателя для текущего потока.
00047                          */
00048                         void* Pointer() const { return pthread_getspecific(key); }
00049 
00050                         /**
00051                          * Установить значение указателя для текущего потока.
00052                          */
00053                         void SetPointer(void* Ptr) { pthread_setspecific(key, Ptr); }
00054                         
00055                 private:
00056                 
00057                         pthread_key_t key;
00058                 };
00059 
00060         }
00061 }
00062 
00063 #endif //CNTM_SYSTHREADLOCALPTR_H

SourceForge.net Logo
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой  doxygen 1.5.3