Windows, Linux 스레드 C언어

Windows

 

 

함 수 명

내 용

CreateThread

∘새로운 쓰레드를 시작하기 위해 사용

∘아래의 6개의 파라미터를 받아들인다

-새로운 쓰레드의 SECIRUTY_ATTRIBUTES구조체에 대한 포인터, 이 파라미터에 NULL을 사용하는 것은 운영체제가 새로운 쓰레드에게 기본적인 보안 기술자를 부여하게된다.

-새로운 쓰레드의 초기 스택크기

-쓰레드가 실행을 시작하는 시작 함수의 어드레스

-새로운 쓰레드의 시작 함수로 전달되는 32비트 파라미터

-쓰레드가 생성되는 방법을 지정하는 플래그

-CreateThread가 반환될 때 ID로 채워지는 32비트 변수의 어드레스

ExitThread

∘쓰레드를 마치는 일반적인 방법

TerminateThread

∘쓰레드를 마치기 위한 방법(가장 선호되지 않는 종료 방법)

GetExitCodeThread

∘쓰레드의 종료 코드를 구할 수 있다.

GetCurrentThread

∘현재 수행되고 있는 프로세스의 현재 수행되고 있는 쓰레드에 대한 유사 핸들을 반환

GetCurrentThreadId

∘어떤 파라미터를 사용하지 않고, 함수 호출을 수행한 쓰레드를 식별하는 데 사용되는 쓰레드 ID를 반환한다.

SetThreadAffinityMask

∘전체 프로세스나 프로세스의 특별한 쓰레드에 대해서 친화성 마스크를 설정

∘아래의 두가지 파라미터를 가진다.

-변경된 친화성 마스크를 가질 쓰레드에 대한 핸들

-새로운 친화성 마스크

SetThreadIdealProcessor

∘쓰레드의 선호 프로세서를 지정하는 방법을 제공

∘선호 프로세서의 마스크를 설정할 수 는 없다.

∘원하는 프로세서로 하나의 프로세서를 지정해야 한다.

∘아래의 두가지 파라미터를 가진다.

-변경된 친화성 마스크를 가질 쓰레드에 대한 핸들

-쓰레드의 선호 프로세서

 

Windows(Cnt)

 

 

함 수 명

내 용

GetPriorityClass

∘프로세스의 우선순위 클래스를 반환한다. 각 쓰레드의 운선순위는 프로세스의 우선순위 클래스의 프로세스가 소유한 각 쓰레드의 우선순위를 사용하여 계산된다. 쓰레드 단계는 서로 베타적이다. 높은 우선순위를 가진 TM레드가 모두 만족되어야 낮은 우선순위를 가진 쓰레드가 스케쥴링 된다.

GetQueueStatus

∘이 함수를 호출한 TM레드의 메시지 큐 상태를 반환한다.

GetThreadContext

∘주어진 쓰레드의 실행 컨텍스트를 반환한다.

GetDesktopThread

∘주어진 쓰레드에 연관된 데스크탑 객체의 핸들을 반환한다. 개개의 워크스테이션에 대한 탑레벨 윈도인 데스크탑 객체는GetUserObjectSeucurity()와 SetUserObjectSeucurity() API함수를 통해 사용자 보안에 접근할 수 있다.

GetThreadPriority

∘스레드에 할당된 우선순위 단계를 반환한다. 쓰레드의 우선순위 값과 프로세스 우선순위 클래스가 쓰레드의 기본 우선순위 단계를 결정한다.

GetThreadSelectorEntry

∘주어진 쓰레드의 셀렉터에 대한 로컬 드시크럽터 테이블을 반환한다. 로컬 디스크럽터 테이블은 세그먼트 상대주소를 페이지 테이블 조합으로 구성되는 선형 주소로 컨버트한다.

InitializeCriticalSection

∘크리티컬 섹션 객체를 셋업한다. 이 함수는 반드시

EnterCriticalSection()이 호출되기 전에 호출되어야 한다.

InterlockedDecrement

∘인터록된 변수는 시스템이 동기화시켜 관리한다.

∘InterlockedDecrement()함수는 인터록된 32비트 변수값을 1줄이고 그 결과값을 체크한다.

InterlockedExchange

∘인터록된 변수는 시스템이 동기화시켜 관리한다.

∘InterlockedExchange()함수는 인터록된 32비트 long변수값을 다른 long 값과 교환한 후에 결과값을 체크한다.

InterlockedIncrement

∘인터록된 변수는 시스템이 동기화시켜 관리한다.

∘InterlockedDecrement()함수는 인터록된 32비트 long변수값을 1 줄이고 결과값을 체크한다.

LeaveCriticalSection

∘크리티걸 섹션의 소유권을 포기한다. 동일한 객체에 대해 이 객체를 소유하고 있는 쓰레드가 EnterCritical()를 호출한 수 만큼 LeaverCriticalSection()함수를 호출해야 소유권이 해제된다.

 

Windows(Cnt)

 

 

함 수 명

내 용

MsgWaitForMultiple

Objects

∘지정한 객체가 시그널되거나 지정한 입력 현태가 쓰레드의 입력 큐에 나타났거나 타임아웃이 발생할때까지 쓰레드를 서스펜드 시킨다. 이 함수가 호출되기 전에 존재했던 입력큐 내의 입력은 영향을 주지 않는다. 이 함수는 새로운 입력만을 기다린다.

OpenEvent

∘이벤트 객체의 핸들을 얻는다.

OpenMutex

∘네임드 뮤텍스 객체의 핸들을 얻는다.

OpenProcess

∘존재하는 프로세스 객체에 대한 핸들을 얻는다.

OpenSemaphore

∘네임드 세마포어 객체를 연다.

PulseEvent

∘이벤트의 상태를 시그널로 설정했다가 논시그널 상태로 설정하는 단일 오퍼레이션을 수행한다.

RaiseException

∘호출한 쓰레드상에 예외를 발생시킨다.

ReadProcessMemory

∘지정한 프로세스로부터 데이터를 읽는다.

ResisterHotkey

∘현재 쓰레드에 대해 핫키를 정의한다.

ReleaseMutex

∘뮤텍스 객체를 해제시킨다. 뮤텍객체는 시그널된다.

ReleaseSemaphore

∘세마포어 객체의 카운트를 증가시킨다.

∘카운트는 CreateSemaphore() 호출시 결정한 최대 카운트까지 증가될 수 있다.

ResetEvent

∘이벤트의 상태를 논시그널로 설정한다. 논시그널 이벤트는 대기중인 이벤트가 들어오지 못하도록 블록킹한다.

ResumeThread

∘서스펜드되었던 쓰레드의 수행을 재개시킨다. 서스펜드 카운트는 각 스레드애 대해 내부적으로 유지된다. SuspendThread()가 호출되면 카운트가 증가한다. ResumeThread()가 호출되면 카운트가 감소한다. 서스펜드된 쓰레드의 서스펜드 카운트가 0 이되면 수행이 재개된다.

SetEvent

∘이벤트의 상태를 시그널 상태가 되게 한다. 시그널 이벤트는 이벤트를 기다리는 쓰레드가 수행을 계속할 수 있도록 허용한다.

SetPriorityClass

∘주어진 프로세스의 우선순위 클래스를 조정한다. 각 쓰레드의 우선순위는 프로세스의 우선순위 클래스와 프로세스가 소유한 각 쓰레드의 우선순위를 사용해 계산된다. 쓰레드는 각 우선순위 단계에 따라 라운드 로빈 방식으로 스케쥴링된다.

SetThreadPriority

∘주어진 쓰레드에 대한 우선순위 단계를 변경한다. 쓰레드의 우선순위 값과 프로세스 우선순위 클래스가 쓰레드의 기본 우선순위 단계를 결정한다.

SetUnhandledExceptionFilter

∘처리되지 않은 예외가 발생한 경우 예외 필터를 설치하도록 한다. 예외는 보통 로컬 예외 핸들러에 의해 트래핑되는데, 만약 이런 경우가 아니라면 쓰레드의 처리된 예외 필터가 작동한다. 이 함수는 응용 프로그램이 예외 처리와 가장 상위레벨에서 자신의 필터사이로 끼어들 수 있도록 한다.

Sleep

∘현재 쓰레드의 수행을 지정된 시간동안 서스펜드한다.

SuspendThread

∘서스펜드 카운트에 1을 더한다. 쓰레드의 서스펜드 카운트가 0보다 클 때마다 쓰레드는 서스펜드돈다. ResumeThread()함수는 서스펜드 카운트를 감소시킨다.

 

Windows(Cnt)

 

 

함 수 명

내 용

TlsFree

∘쓰레드 지역 저장소(TLS) 인덱스를 해제한다. 이 함수는 할당돼 TLS 인덱스 슬롯에 설정된 데이터까지 해제하는 것은 아니다. TLS를 관리하는 책임은 각 쓰레드에게 있다.

TlsGetValue

∘지정한 TLS 인덱스에 저장된 메모리 요소를 반환한다.

TlsSetValue

∘지정된 TLS 인덱스에 메모리를 저장한다.

UnhandledException

Filter

∘프로세스가 디버깅되고 있으면 예외를 디버거로 전달한다. 그렇지 않으면 응용프로그램 애러 메시지 박스를 활성화하고 예외처리기가 수행되도록 한다.

UnresisiterHotKey

∘핫키 정의를 시스템으로부터 삭제한다.

WaitForInputIdle

∘주어진 프로세스에게 처리되지 않은 입력이 들어오거나 주어진 타임아웃이 발생할 때까지 수행을 서스펜드 시킨다. 이는 이미 수행을 개시한 프로세스 상호간의 통신을 시도하기 전에 자신을 초기화시키도록 한다.

WaitForMultiple

Objects

∘리스트 내의 객체중 일부 또는 전부가 시그널 상태로 되거나 지정된 타임아웃 시간이 지났을 때만 반환하는 대기함수이다.

WaitForSingle

Objects

∘인자에 지정한 객체가 시그널 상태로 되거나 타임아웃 시간이 경과했을 때만 반환한다.

WriteProcessMomory

∘지정한 프로세스 내의 메모리에 데이터를 쓴다.

 

LINUX(pThreads)

 

 

함 수 명

내 용

pthread_create

∘pthread_create() 함수는 thread에 지정된 인수에 새로운 스레드에 대한 식별자를 저장하며 새로운 스레드를 생성한다.

pthread_exit

∘pthread_exit() 함수는 pthread_cleanup_push()를 사용하여 스레드를 위해 등록되었던 정리 핸들러를 호출하고 나서 나중에 pthread_join()을 사용하여 부모나 다른 스레드에 의해 구할 수 있는 retval을 하며 현재 스레드를 종료한다. 또한, 스레드는 단순히 초기 함수로부터 반환하여 종료할 수 있다.

pthread_join

∘pthread_join() 함수는 th에 지정된 스레드가 끝날 때까지 현재 스레드를 중단하는 데 사용된다.

pthread_setschedparam

∘pthread_setschedparam() 함수는 실행중인 스레드와 관련된 스 케쥴링 정책과 파라미터를 설정하는데 사용된다.

pthread_getschedparam

∘pthread_getschedparam() 함수는 실행중인 스레드와 관련된 스 케쥴링 정책과 파라미터를 구하는 데 사용된다.

pthread_attr_init

∘pthread_attr_init() 함수는 새로운 오브젝트를 초기화 한다.

pthread_attr_destroy

∘pthread_attr_destroy() 함수는 pthread_attr_init()로 만들어진 오브젝트를 제거한다.

pthread_atfork5

∘pthread_atfork() 함수는 새로운 프로세스가 생성될 때 호출될 세 가지 독립적인 핸들러를 등록한다.

pthread_cancel

∘pthread_cancel() 함수는 현재 스레드가 thread에 지정된 다른 스레드를 취소하게 해준다.

LINUX(pThreads)

 

 

함 수 명

내 용

pthread_cleanup_push

pthread_cleanup_push() 매크로는 pthread_exit()를 호출하여 스fp드를 종료할 때 arg에 지정된 void 포인터 인수를 사용하여 호 출될 핸들러 routine을 등록하거나 취소 요청을 받아들인다.

pthread_cleanup

_pop

pthread_cleanup_pop() 매크로는 가장 최근에 저장된 정리 핸들러 의 등록을 해제한다. execute 의 값이 0이 아니라면 핸들러는 실행된다. pthread_cleanup_push() 매크로와 pthread_cleanup_pop() 매크로는 같은 호출 함수 내에서 호출되어야 한다.

pthread_cleanup

_push_defer_np

pthread_cleanup_push_defer_np() 함수는 취소를 지연시키기 위해 pthread_cleanup_push() 매크로와 pthread_setcanceltype()를 호출하는 리눅스 전용의 확장 함수이다.

pthread_cleanup

_pop_restore_np

pthread_cleanup_pop_restore_np()는 pthread_cleanup_push_defer_np() 함수에 의해 등록된 가장 최근의 핸들러를 구하고 취소 형태 를 복구한다.

pthread_cond_init

pthread_cond_init() 함수는 조건이 충족될 때 현재 스레드를 중단하는데 사용된다.

pthread_cond_destroy

pthread_cond_destroy() 함수는 cond_t 형의 오브젝트를 위한 소멸 자이다. 이 함수는 조건을 기다리는 스레드가 없는 지 확인하는 동작만을 수행한다.

pthread_cond_signal

pthread_cond_signal() 함수는 조건을 기다리는 스레드의 하나를 재시작하는 데 사용된다.

pthread_cond_broadcast

pthread_cond_broadcast() 함수는 모든 스레드를 재시작하는 데 사용된다.

pthread_cond_wait

pthread_cond_wait() 함수는 mutex에 지정된 뮤텍스의 잠금을 해제하고 조건 변수 cond에서 시그널을 기다린다.

pthread_cond_timewait

pthread_cond_timewait() 함수는 pthread_cond_wait() 함수와 비 슷하지만 abstime에 지정된 시간까지만 대기한다.

pthread_equal

pthread_equal() 함수는 thread1 과 thread2에서 참조되는 스레드가 실제로 같다면 0이 아닌 함수 값을 반환한다. 그렇지 않으면 0을 반환한다.

pthread_mutex_init

pthread_mutex_init() 함수는 뮤텍스 오브젝트를 위한 생성자이다.

pthread_mutex_destroy

pthread_mutex_destroy() 함수는 뮤텍스 오브젝트를 위한 소멸자이다.

pthread_mutex_lock

pthread_mutex_lock() 함수는 뮤텍스를 잠그는 데 사용된다. 성공하면 0을 반환하고, 그렇지 않으면 에러코드를 반환한다.

pthread_mutex

_unlock()

pthread_mutex_unlock() 함수는 pthread_mutex_lock() 함수에 의해 잠겨진 뮤텍스를 해제 하는데 사용된다.

pthread_mutex

_trylock

pthread_mutex_trylock() 함수는 pthread_mutex_lock() 함수와 비슷하지만 이미 뮤텍스가 잠기지 않았다면 방지되지 않고 스레드를 중단한다. 이 함수는 pthread_mutex_lock()와 마찬가지로 성공하면 0을 반환하고, 그렇지 않으면 에러코드를 반환한다.

Share
이 글과 관련된 글
  1. [2006/09/29] 리눅스 프로그래밍 가이드 by 온새미로 (562)
TAG

Leave Comments

profile

영란, 익수`s thoth

2012.02
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29
RSS FEEDATOM FEED
thothPowered by TextyleSponsored by ETNEWS
T-NAVI