Класс для управления потоками. Подробнее...
#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().
1.6.1