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
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |