NSPipeline::TThread Class Reference

Tato trida reprezentuje jednoduche vlakno. More...

#include <Thread.h>

List of all members.

Public Member Functions

 TThread (void)
 Konstruktor.
 ~TThread (void)
 Destruktor.
BOOL Run (FUNC_PTR function, void *params)
 Spusteni vlakna na prislusne funkci a s pozadovanym parametrem.
BOOL IsRunning (void) const
 Metoda urci zda bylo vlakno spusteno.
BOOL IsTerminated (void)
 Metoda urci zda bylo bezici vlakno ukonceno.
BOOL Finish (void)
 Metoda radne ukonci provadeni dokonceneho vlakna.
BOOL Terminate (void)
 Metoda ukonci provadeni vlakna.

Private Member Functions

 TThread (const TThread &orig)
 falesny kopirovaci konstruktor
void operator= (const TThread &orig)
 falesny prirazovaci operator

Private Attributes

HANDLE m_thread
 handle na vytvorene vlakno


Detailed Description

Tato trida reprezentuje jednoduche vlakno.

Vlakno se spousti metodou TThread::Run().

Po spusteni by melo byt vlakno ukonceno nejakym externim mechanismem (napr. promennou), ktera ve vykonavaci funkci kontroluje beh smycky. Vlakno by melo byt spravne ukonceno tak, ze metoda TThread::IsTerminated() vrati TRUE a nasledne staci zavolat metodu TThread::Finish(), ktera zajisti vycisteni promennych uvnitr..

Vlakno lze prerusit nasilim pomoci metody TThread::Terminate() - pouziti teto metody je vsak nebezpecne protoze uvnitr beziciho vlakna muzou zustat nealokovane zdroje, otevrene synchronizacni mechanismy apod.

Warning:
Funkce spoustena vlaknem musi vracet hodnotu typu DWORD. Tato hodnota nesmi byt v zadnem pripade shodna s hodnotou STILL_ACTIVE. V tom pripade by totiz nebylo mozne rozeznat jiz dokoncenou funkci (toto chovani vychazi z implementace vlakne ve Windows).

Definition at line 49 of file Thread.h.


Constructor & Destructor Documentation

NSPipeline::TThread::TThread void   )  [inline]
 

Konstruktor.

Vytvori neinicializovane vlakno. To musi byt nasledne spusteno metodou Run().

Definition at line 78 of file Thread.h.

References m_thread.

NSPipeline::TThread::~TThread void   )  [inline]
 

Destruktor.

Mel by byt volan pouze na radne ukoncene vlakno, tj. metoda IsTerminated() vraci TRUE a nasledna metoda Finish() vycisti objekt.

Pokud vlakno neni radne ukonceno pak se jej destruktor pokusi ukoncit, coz ale muze zpusobit problemy, protoze to muze znamenat preruseni beziciho vlakna napr. po vstupu do kriticke sekce apod.

Definition at line 93 of file Thread.h.

References m_thread, and Terminate().

Here is the call graph for this function:

NSPipeline::TThread::TThread const TThread orig  )  [private]
 

falesny kopirovaci konstruktor


Member Function Documentation

BOOL TThread::Finish void   ) 
 

Metoda radne ukonci provadeni dokonceneho vlakna.

Metoda smi byt volana pouze na ukoncene vlakno - tj. kdyz IsTerminated() vraci TRUE.

Metoda vraci TRUE pokud bylo vlakno radne ukonceno, jinak FALSE.

Po uspesnem zavolani teto metody (TRUE) je mozne spustit novou funkci.

Definition at line 157 of file Thread.cpp.

References IsTerminated(), and m_thread.

Referenced by NSPipeline::TSimpleUnit::Stop(), and NSPipeline::TCameraThread::Stop().

Here is the call graph for this function:

BOOL TThread::IsRunning void   )  const
 

Metoda urci zda bylo vlakno spusteno.

Note:
Vlakno uz nemusi bezet, metoda pouze detekuje ze vlakno bylo spusteno (vytvoreno).

Definition at line 68 of file Thread.cpp.

References m_thread.

BOOL TThread::IsTerminated void   ) 
 

Metoda urci zda bylo bezici vlakno ukonceno.

Pokud vlakno nebylo vubec spusteno pak metoda vrati TRUE. Metoda vraci FALSE pokud vlakno jeste bezi nebo v pripade nejake systemove chyby vznikle v dusledku dotazu na vlakno..

Definition at line 80 of file Thread.cpp.

References m_thread.

Referenced by Finish(), NSPipeline::TSimpleUnit::Stop(), NSPipeline::TCameraThread::Stop(), and Terminate().

void NSPipeline::TThread::operator= const TThread orig  )  [private]
 

falesny prirazovaci operator

BOOL TThread::Run FUNC_PTR  function,
void *  params
 

Spusteni vlakna na prislusne funkci a s pozadovanym parametrem.

Vlakno lze spustit pouze jednou. Po uspesnem spusteni jiz dalsi volani teto metody vraci TRUE a nic se nedeje.

Novou funkci lze spustit teprve po uspesnem ukonceni vlakna - tj. metoda IsTerminated() vrati nejprve TRUE a nasledne je pomoci metody Finish() objekt uveden do pocatecniho stavu.

Metoda vraci TRUE pokud bylo vlakno uspesne spusteno nebo pokud jiz nejake vlakno bezi. Metoda vrati FALSE v pripade, ze nelze vytvorit nove vlakno, coz je kriticka chyba.

Warning:
Funkce spoustena vlaknem musi vracet hodnotu typu DWORD. Tato hodnota nesmi byt v zadnem pripade shodna s hodnotou STILL_ACTIVE. V tom pripade by totiz nebylo mozne rozeznat jiz dokoncenou funkci.
Parameters:
function [in] ukazatel na funkci, ktera bude nad vlaknem spustena
param [in] ukazatel na parametry - funkce musi znat spravny typ a podle toho provest pretypovani

Definition at line 38 of file Thread.cpp.

References m_thread.

Referenced by NSPipeline::TSimpleUnit::Start(), and NSPipeline::TCameraThread::Start().

BOOL TThread::Terminate void   ) 
 

Metoda ukonci provadeni vlakna.

Pokud vlakno jeste nebylo ukonceno pak metoda prerusi vlakno.

Metoda vraci TRUE pokud bylo vlakno radne ukonceno.

Tato metoda by mela byt volana pouze na vlakno, ktere vraci pri metode TThread::IsTerminated() hodnotu TRUE. To znamena, ze funkce vlakna byla ukoncena navratovou hodnotou a vlakno ceka na ukonceni.

Pokud je metoda volana na vlakno, ktere stale bezi, pak dojde k ukonceni vlakna behem provadeni, coz muze zpusobit napr. neuvolneni synchronizacnich mechanizmu (kriticke sekce, semafory, apod).

Definition at line 121 of file Thread.cpp.

References IsTerminated(), and m_thread.

Referenced by ~TThread().

Here is the call graph for this function:


Member Data Documentation

HANDLE NSPipeline::TThread::m_thread [private]
 

handle na vytvorene vlakno

Definition at line 69 of file Thread.h.

Referenced by Finish(), IsRunning(), IsTerminated(), Run(), Terminate(), TThread(), and ~TThread().


The documentation for this class was generated from the following files:
Generated on Sat Nov 17 16:26:10 2007 for Image Processing Pipeline by  doxygen 1.4.6-NO