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