SysThreadIdentifier.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_SYSTHREADIDENTIFIER_H
00015 #define CNTM_SYSTHREADIDENTIFIER_H
00016 #include <pthread.h>
00017 
00018 namespace Cntm
00019 {
00020         namespace SpecUtils
00021         {
00022 
00023                 /**
00024                  * Класс обеспечивает идентификацию потоков. Происходит это следующим образом: поток, который надо идентифицировать, должен вызвать метод Store(), который сохранит идентификатор потока в объекте. Для проверки тот ли это поток, в котором был вызван Store() следует вызвать Check(). Если это тот же поток, то Check() вернет true, в противном случае - false.
00025                  *
00026                  * Класс обеспечивает многопоточность.
00027                  * @author Овсеевич Р.
00028                  * \ingroup SystemUtils
00029                  */
00030                 class SysThreadIdentifier
00031                 {
00032                 public:
00033 
00034                         /**
00035                          * Запомнить текущий поток для идентификации.
00036                          */
00037                         void Store() { storedThread = pthread_self(); }
00038 
00039                         /**
00040                          * Произвести проверку текущего потока. Если это тот же поток, который был запомнен методом Store(), то результат true, если это другой поток, то результат false.
00041                          */
00042                         bool Check() { return pthread_equal(pthread_self(), storedThread); }
00043 
00044                 private:
00045 
00046                         /**
00047                          * Идентификатор отмеченного потока.
00048                          */
00049                         pthread_t storedThread;
00050                 };
00051 
00052         }
00053 }
00054 
00055 #endif //CNTM_SYSTHREADIDENTIFIER_H

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