Overview   Project   Class   Tree   Deprecated   Index 
FRAMES    NO FRAMES
SUMMARY:  INNER | FIELD | CONSTR | METHOD

dcl
Class Thread

Object
   |
   +--Thread

   in Thread.h
Direct Known Subclasses:
PollThread

class Thread
extends Object


Inner Classes, Typedefs, and Enums
enum Thread::anonymous_enum_1
          
class Thread::Barrier
          
class Thread::CondVar
          CondVar: Conditional Variable Windows Note.
class Thread::Event
          
typedef Thread::initRoutine
          
typedef Thread::KeyType
          
class Thread::Mutex
          
typedef Thread::OnceType
          다중 스레드 환경에서 단일 호출을 위한 제어변스의 타입을 정의한다.
class Thread::SingleLock
          
typedef Thread::SingleLockMutex
          
typedef Thread::SingleLockSpin
          
class Thread::SingleTryLock
          
typedef Thread::SingleTryLockMutex
          
typedef Thread::SingleTryLockSpin
          
class Thread::SpinLock
          
 
Constructor Summary
Thread( const char_t* _name = NULL )
          기본 생성자이다.
 
Method Summary
 static void crtLock( const void* _p )
          C 런타임이 다중 스레드에 안전하지 않으면 이것을 사용하여 동기화 한다.
 static void crtUnlock( const void* _p )
          
 static long long decrementAndGet( volatile long long& _n )
          
 static Thread* getCurrentThread()
          호출한 스레드의 객체를 반환한다.
 static unsigned long getCurrentThreadId()
          호출한 스레드의 스레드의 ID을 얻는다.
 unsigned long id() const
          스레드 ID를 반환한다.
 static long long incrementAndGet( volatile long long& _n )
          
protected virtual bool init()
          스레드 객체를 초기화한다.
 int join()
          스레드의 종료를 기다린다.
 static Thread::KeyType keyCreate()
          스레드 전용 지억장소를 위한 키를 생성한다.
 static void keyDelete( Thread::KeyType _key )
          스레드 전용 기억장소를 위한 키를 삭제한다
 static void* keyGetValue( Thread::KeyType _key )
          호출 스레드 전용 기억장소의 값을 리턴한다.
 static void keySetValue( Thread::KeyType _key, void* _value )
          호출 스레드 전용 기억장소에 값을 설정한다.
 const String& name() const
          스레드 생성에 주어진 이름을 반환한다.
 static void once( volatile Thread::OnceType& _onceControl, Thread::initRoutine _initRoutine )
          다중 스레드 환경에서 _initRoutine의 단일 호출을 보장한다.
protected virtual int run()= 0
          스레드의 주 실행 루프를 구현한다.
 static void sleep( unsigned int _mills )
          미리초만큼 스레드의 실행을 중지한다.
 void start()
          스레드를 생성하고 시작한다.
 bool started() const
          스레드의 시작여부를 반환한다.
 virtual String toString() const
          객체의 간략한 정보를 반환한다.
 static void yield()
          CPU를 다른 스레드에 양보한다.
   
Methods inherited from class Object
toString, destroy, className, isInstanceOf, typeInfo
 

Constructor Detail

Thread

public Thread( const char_t* _name = NULL );
기본 생성자이다.
Parameters:
_name - 객체에 이름을 준다.


Method Detail

crtLock

public static void crtLock( const void* _p );
C 런타임이 다중 스레드에 안전하지 않으면 이것을 사용하여 동기화 한다.

crtLock을 호출하면 반드시 이 후에 crtUnlock을 호출 해야만 한다.

example

char a[100];
time_t now = time(NULL);
Thread::crtLock(&now);
char* cp = ctime(&now);
strcpy(a, cp);
Thread::crtUnlock(&now);

crtUnlock

public static void crtUnlock( const void* _p );

decrementAndGet

public static long long decrementAndGet( volatile long long& _n );

getCurrentThread

public static Thread* getCurrentThread();
호출한 스레드의 객체를 반환한다.

이 메소드는 스레드 생성 후 init()에서 스레드 전용 기억장소에 설정한 것의 반환값이다. 따라서, init()이 호출되지 않으면 NULL을 리턴한다.


getCurrentThreadId

public static unsigned long getCurrentThreadId();
호출한 스레드의 스레드의 ID을 얻는다.

id

public unsigned long id() const;
스레드 ID를 반환한다.

incrementAndGet

public static long long incrementAndGet( volatile long long& _n );

init

protected virtual bool init();
스레드 객체를 초기화한다.

이 메소드는 start()에 의해 생성된 스레드 내에서 호출된다.

기본 구현은 getCurrentThread()을 위해 객체의 포인터를 스레드 전용 기억장소에 설정한다.

Returns:
false를 반환하면 스레드는 즉시 종료되고, run()은 호출되지않고 join()은 -1을 반환한다.
See Also:
keySetValue

join

public int join();
스레드의 종료를 기다린다.
Returns:
run()이 반환한 값

keyCreate

public static Thread::KeyType keyCreate() throw( SysError* );
스레드 전용 지억장소를 위한 키를 생성한다.

UNIX는 pthread_key_create, Windows는 TlsAlloc을 사용한다.

Throws:
SysError - 키 생성이 실패하면 예외가 던져지며, 사유는 다음과 같다.
  • UNIX - 키생성에 PTHREAD_KEYS_MAX에 도달했거나 메모리가 부족한 경우이다.
  • Windows - TlsAlloc이 TLS_OUT_OF_INDEXES을 반환했다.

keyDelete

public static void keyDelete( Thread::KeyType _key ) throw( SysError* );
스레드 전용 기억장소를 위한 키를 삭제한다
Parameters:
_key - keyCreate로 반환된 값.
Throws:
SysError - _key가 유효하지 않으면 예외가 던져진다.

keyGetValue

public static void* keyGetValue( Thread::KeyType _key ) throw( SysError* );
호출 스레드 전용 기억장소의 값을 리턴한다.
Parameters:
_key - keyCreate로 반환된 값.
Returns:
값이 설정되어 있지 않으면 NULL을 반환한다.
Throws:
SysError - _key가 유효하지 않으면 예외가 던져진다.

keySetValue

public static void keySetValue( Thread::KeyType _key, void* _value ) throw( SysError* );
호출 스레드 전용 기억장소에 값을 설정한다.
Parameters:
_key - keyCreate로 반환된 값.
Throws:
SysError - _key가 유효하지 않으면 예외가 던져진다.

name

public const String& name() const;
스레드 생성에 주어진 이름을 반환한다.

once

public static void once( volatile Thread::OnceType& _onceControl, Thread::initRoutine _initRoutine );
다중 스레드 환경에서 _initRoutine의 단일 호출을 보장한다.

사용의 예는 다음과 같다.

   static Thread::OnceType once = Thread::ONCE_INIT;
   static void initRoutine()
   {
    ...
   }
   
   Thread::once(once, initRoutine);

run

protected virtual int run()= 0;
스레드의 주 실행 루프를 구현한다.

sleep

public static void sleep( unsigned int _mills );
미리초만큼 스레드의 실행을 중지한다. UNIX 에서 시그널에 인터럽트될 수 있다.

start

public void start() throw( SysError* );
스레드를 생성하고 시작한다. 실패하면 예외를 던진다.

started

public bool started() const;
스레드의 시작여부를 반환한다.
Returns:
start() 호출로 스레드가 시작되었으면 true, 그렇지 않으면 false를 반환한다.

toString

public virtual String toString() const;
객체의 간략한 정보를 반환한다.

yield

public static void yield();
CPU를 다른 스레드에 양보한다.

 Overview   Project   Class   Tree   Deprecated   Index 
FRAMES    NO FRAMES
SUMMARY:  INNER | FIELD | CONSTR | METHOD