Класс для управления потоками. Подробнее...
#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 ) ); } }
void* nitro::ThreadAbstraction::ThreadData [private] |
Данные о потоке.
См. определение в файле thread_abstraction.h строка 156
Используется в CreateThread(), Release() и ThreadAbstraction().
void*( * nitro::ThreadAbstraction::ThreadFunction)(void *) [private] |
Указатель на потоковую функцию.
См. определение в файле thread_abstraction.h строка 180
Используется в CreateThread() и ThreadAbstraction().
void* nitro::ThreadAbstraction::ThreadParam [private] |
Параметры, передаваемые потоковой функции.
См. определение в файле thread_abstraction.h строка 168
Используется в CreateThread().