Открытые члены | Открытые статические члены | Закрытые члены | Закрытые данные

Класс nitro::ThreadAbstraction

Класс для управления потоками. Подробнее...

#include <system/thread_abstraction.h>

Полный список членов класса

Открытые члены

 ThreadAbstraction (void)
void CreateThread (void *(*theThreadFunction)(void *), void *theThreadParam)
void Release (void)
 ~ThreadAbstraction ()

Открытые статические члены

static void Sleep (std::size_t Milliseconds)

Закрытые члены

ThreadAbstraction operator= (const ThreadAbstraction &Thread)
 ThreadAbstraction (const ThreadAbstraction &Thread)

Закрытые данные

void * ThreadData
void * ThreadParam
void *(* ThreadFunction )(void *)

Подробное описание

Класс для управления потоками.

Автор:
Додонов А.А.

См. определение в файле thread_abstraction.h строка 52


Конструктор(ы)

nitro::ThreadAbstraction::ThreadAbstraction ( void   ) 

Конструктор.

Исключения:
nitro::exception - Кидает исключение этого типа при возникновении ошибки.
Автор:
Додонов А.А.

См. определение в файле thread_abstraction.cpp строка 124

Перекрестные ссылки ThreadData и ThreadFunction.

        {
                ThreadFunction = NULL;

                ThreadData = NULL;
        }

nitro::ThreadAbstraction::~ThreadAbstraction (  ) 

Деструктор (виртуальный).

Автор:
Додонов А.А.

См. определение в файле thread_abstraction.cpp строка 131

Перекрестные ссылки Release().

        {
                try
                {
                        Release();
                }
                catch( nitro::exception e )
                {
                }
                catch( ... )
                {
                }
        }

Граф вызовов:

nitro::ThreadAbstraction::ThreadAbstraction ( const ThreadAbstraction Thread  )  [inline, private]

Закрытый конструктор копирования.

Аргументы:
Thread - объект потока.
Автор:
Додонов А.А.

См. определение в файле thread_abstraction.h строка 212

{}


Методы

void nitro::ThreadAbstraction::CreateThread ( void *(*)(void *)  theThreadFunction,
void *  theThreadParam 
)

Функция создания потока.

Аргументы:
theThreadFunction - указатель на потоковую функцию.
theThreadParam - фактический параметр потоковой функции.
Исключения:
nitro::exception - Кидает исключение этого типа при возникновении ошибки.
Автор:
Додонов А.А.

См. определение в файле thread_abstraction.cpp строка 28

Перекрестные ссылки nitro::exception::code(), Release(), ThreadData, ThreadFunction, ThreadParam и nitro::exception::what().

Используется в nitro::Timer::Run() и nitro::Thread::Run().

        {
                try
                {
                        Release();

                        ThreadFunction = theThreadFunction;

                        ThreadParam = theThreadParam;

                #if     defined( WIN32_PLATFORM ) || defined( MINGW_PLATFORM )
                        ThreadData = ( void * )new HANDLE;

                        * ( ( HANDLE * ) ThreadData ) = ::CreateThread( 0 , 0 , ( LPTHREAD_START_ROUTINE )WinThreadFunction , this , 0 , 0 );

                        if( ! * ( ( HANDLE * ) ThreadData ) )
                        {
                                throw( nitro::exception( std::string( "An error occured while thread creation" ) , 0 ) );
                        }
                #endif

                #if defined( NIX_PLATFORM ) || defined( CYGWIN_PLATFORM )
                        ThreadData = ( void * )new pthread_t;

                        if( pthread_create( ( pthread_t * )ThreadData , NULL , theThreadFunction , ( void * ) theThreadParam ) )
                        {
                                throw( nitro::exception( std::string( "An error occured while thread creation" ) , 0 ) );
                        }

                        if( pthread_detach( * ( ( pthread_t * )ThreadData ) ) )
                        {
                                throw( nitro::exception( std::string( "An error occured while thread detaching" ) , 0 ) );
                        }
                #endif
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ThreadAbstraction::CreateThread( void ( * theThreadFunction )( void * ) , void * theThreadParam )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ThreadAbstraction::CreateThread( void ( * theThreadFunction )( void * ) , void * theThreadParam )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

ThreadAbstraction nitro::ThreadAbstraction::operator= ( const ThreadAbstraction Thread  )  [inline, private]

Закрытый оператор присваивания.

Аргументы:
Thread - объект потока.
Автор:
Додонов А.А.

См. определение в файле thread_abstraction.h строка 196

{return( *this );}

void nitro::ThreadAbstraction::Release ( void   ) 

Функция очистки структур.

Исключения:
nitro::exception - Кидает исключение этого типа при возникновении ошибки.
Автор:
Додонов А.А.

См. определение в файле thread_abstraction.cpp строка 73

Перекрестные ссылки nitro::exception::code(), ThreadData и nitro::exception::what().

Используется в CreateThread() и ~ThreadAbstraction().

        {
                try
                {
                        if( ThreadData != NULL )
                        {
                        #if     defined( WIN32_PLATFORM ) || defined( MINGW_PLATFORM )
                                delete ( HANDLE * ) ThreadData;
                        #endif

                        #if defined( NIX_PLATFORM ) || defined( CYGWIN_PLATFORM )
                                delete ( pthread_t * ) ThreadData;
                        #endif
                                ThreadData = NULL;
                        }
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ThreadAbstraction::Release( void )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ThreadAbstraction::Release( void )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:

void nitro::ThreadAbstraction::Sleep ( std::size_t  Milliseconds  )  [static]

Функция останавливает поток в котором выполнена.

Аргументы:
Milliseconds - Количество миллисекунд.
Исключения:
nitro::exception - Кидает исключение этого типа при возникновении ошибки.
Автор:
Додонов А.А.

См. определение в файле thread_abstraction.cpp строка 99

Перекрестные ссылки nitro::exception::code() и nitro::exception::what().

Используется в nitro::_TimerWrapperFunction().

        {
                try
                {
                        #if     defined( WIN32_PLATFORM ) || defined( MINGW_PLATFORM )
				::Sleep( ( DWORD )Milliseconds );
                        #endif

                        #if defined( NIX_PLATFORM ) || defined( CYGWIN_PLATFORM )
                                if( usleep( Milliseconds * 1000 ) == -1 )
                                {
                                        throw( nitro::exception( "An erro occured while usleep call" , 1 ) );
                                }
                        #endif
                }
                catch( nitro::exception e )
                {
                        throw( nitro::exception( std::string( "ThreadAbstraction::Sleep( const std::size_t & Milliseconds )::" ) + e.what() , e.code() ) );
                }
                catch( ... )
                {
                        throw( nitro::exception( std::string( "ThreadAbstraction::Sleep( const std::size_t & Milliseconds )::An error occured" ) , 0 ) );
                }
        }

Граф вызовов:


Данные класса

Данные о потоке.

Автор:
Додонов А.А.

См. определение в файле thread_abstraction.h строка 156

Используется в CreateThread(), Release() и ThreadAbstraction().

void*( * nitro::ThreadAbstraction::ThreadFunction)(void *) [private]

Указатель на потоковую функцию.

Автор:
Додонов А.А.

См. определение в файле thread_abstraction.h строка 180

Используется в CreateThread() и ThreadAbstraction().

Параметры, передаваемые потоковой функции.

Автор:
Додонов А.А.

См. определение в файле thread_abstraction.h строка 168

Используется в CreateThread().


Объявления и описания членов классов находятся в файлах:

Generated by  doxygen 1.6.1