#define CALLBACK      __stdcall
#define WINAPI            __stdcall
#define APIENTRY       WINAPI
 __stdcall  함수 인자를 제거하는 것이 함수 안에서 수행함을 지시
 __cdecl  호출한 곳에서 함수에 전달한 인자를 스택으로부터 제거
 CALLBACK  메시지 프로시저, asynchronous procedure call 시 주로 사용
 WINAPI  Win32 API 원형, 스레드 시작 함수에 사용
 APIENTRY  WinMain 선언시 사용


차 례


  Thread 관련 함수

Thread 예외처리

MFC Thread
Worker Thread
UI Thread

Fiber 스레드 안의 스레드 (Light Weight Thread)

TLS (Thread Local Storage)
1. Win32 TLS
2. 컴파일러 지원 TLS
3. MFC TLS

Thread Synchronization (동기화) - 기본
Interlocked~
Volatile

Thread Synchronization (동기화) - Win32
1.Critical Section
2.Event
3.Semaphore
4.Mutex

Thread Synchronization (동기화) - MFC
1. CSyncObject
2. CCriticalSection
3. CSemaphore
4. CMutex
5. CEvent
6. CSingleLock
7. CMultiLock

Windows Scheduler
Quentum(퀀텀)
우선순위

기타






Thread 관련 함수

CreateThread() 보단 _beginthreadex()를 사용하고 MFC 라면 AfxBeginThread를 사용 한다.
UINT WINAPI ThreadProc(LPVOID lpParameter)
{
    return 0;
}
void main()
{
     //MFC 아닌 경우 #define _MT, #include <process.h> 필요 할 수 있음.
    HANDLE hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadProc, (void*)GetSafeHwnd(), 0, NULL);
}
CreateThread가 CRT 라이브러리(C runtime library)를 위한 준비 과정을 해주지 않아 _beginthreadex 를 권장함.



Thread 예외처리



MFC Thread



Fiber 스레드 안의 스레드 (Light Weight Thread)



TLS (Thread Local Storage)
thread 별로 변수 공유의 목적
TLS 배열 크기 : Windows 200/XP = 1088

TLS 3가지 종료
    1. Win32 TLS
    2. 컴파일러 지원 TLS
    3. MFC TLS




Thread Synchronization (동기화) - 기본

Signal(신호 상태)         : 스레드가 실행 될 수 있는 상태
Nosignal (비신호 상태) : 스레드가 대기하게 되는 상태





Thread Synchronization (동기화) - Win32
1.Critical Section
2.Event
3.Semaphore
4.Mutex




Thread Synchronization (동기화) - MFC 
1. CSyncObject
2. CCriticalSection
3. CSemaphore
4. CMutex
5. CEvent
6. CSingleLock
7. CMultiLock

일부 클래스의 생성자와 Lock(), Unlock() 함수는 인자를 받을 수 있다.
#include <afxmt.h> 필요.





Windows Scheduler
윈도우는 선점형 멀티태스킹의 round-robin 스케쥴링 시스템.



기타
TBB (Intel Threading Building Blocks)
멀티 코어 프로세서 시스템 성능 향상을 도와주는 스레드 처리 C++ 라이브러리.

'C++' 카테고리의 다른 글

Dialog 창에서 엔터나 ESC 일때 창 닫히는 현상 막기  (0) 2010.10.13
윈도우 창을 모니터 화면 가운데로 이동하기  (0) 2010.10.13
Random 난수 생성하기  (0) 2010.10.13
SOCKET  (0) 2010.10.09
자료구조  (0) 2010.09.30
VC++ 수행시간 체크  (1) 2010.09.15
IME(Input Method Editor)  (0) 2010.09.11
Visual C++ : window 생성 template  (0) 2010.09.10