익명 사용자
로그인하지 않음
계정 만들기
로그인
youngwiki
검색
Posix Threads 문서 원본 보기
youngwiki
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
원본 보기
역사
←
Posix Threads
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
상위 문서: [[Concurrent Programming]] ==개요== Pthreads(Posix threads)는 C 프로그램에서 쓰레드(thread)를 조작하기 위한 표준적인 인터페이스이다. Pthreads는 프로그램이 쓰레드를 생성하고, 종료시키며, 수거할 수 있도록 하며, 또한 피어(peer) 쓰래드들과 데이터를 안전하게 공유하며, 시스템 상태 변화에 대해 피어들에게 알리도록 하는 약 60개 정도의 함수를 정의한다. 아래는 간단한 Pthreads 프로그램을 보여준다: <syntaxhighlight lang="c"> #include "csapp.h" void *thread(void *vargp); int main() { pthread_t tid; Pthread_create(&tid, NULL, thread, NULL); Pthread_join(tid, NULL); exit(0); } void *thread(void *vargp) { /* Thread routine */ printf("Hello, world!\n"); return NULL; } </syntaxhighlight> 위에서 메인 쓰레드는 하나의 피어 쓰레드를 생성하고, 그 쓰레드가 종료할 때까지 기다린다. 피어 쓰레드는 "Hello, world!\n"을 출력하고 종료된다. 메인 쓰레드가 동료 쓰레드의 종료를 감지하면, exit을 호출하여 프로세스를 종료한다. 좀 더 자세히 살펴보면, 피어 쓰레드에서 사용되는 코드와 로컬 데이터는 쓰레드 루틴 내<ref>void *thread(void *vargp);에 해당한다.</ref>에 캡슐화되어 있다. 2번째 줄에 있는 프로토타입이 보여주듯이, 각 쓰레드 루틴은 하나의 일반 포인터(generic pointer)를 입력으로 받고, 일반 포인터를 반환한다. 만약 여러 개의 인자를 쓰레드 루틴에 전달하고자 한다면, 인자들을 구조체에 넣고 그 구조체에 대한 포인터를 전달하면 된다. 마찬가지로, 쓰레드 루틴이 여러 값을 반환하게 만들고자 할 때에도 구조체에 대한 포인터를 반환하면 된다. main 함수는 메인 쓰레드의 코드가 시작되는 부분을 포함한다. 메인 쓰레드는 지역 변수 tid를 선언하며, 이는 피어 쓰레드의 TID(Thread ID)를 저장하는데 사용된다. 그리고 메인 쓰레드는 <code>pthread_create()</code> 함수를 호출하여 새로운 피어 쓰레드를 호출한다. 해당 함수의 호출이 리턴되면, 메인 쓰레드와 새롭게 생성된 피어 쓰레드는 동시에 실행되며, tid에는 피어 프로세스의 TID가 저장된다. 그리고 메인 쓰레드는 <code>pthread_join()</code> 함수를 호출하여 피어 쓰레드가 종료될 때까지 기다린다. 마지막으로, 메인 쓰레드는 <code>exit()</code>을 호출하여 프로세스를 종료한다. ===Creating Threads=== 쓰레드는 <code>pthread_create()</code> 함수를 호출하여 다른 쓰레드를 생성한다: <syntaxhighlight lang="c"> #include <pthread.h> typedef void *(func)(void *); //반환값: 성공 시 0, 오류시 0이 아닌 값 int pthread_create(pthread_t *tid, pthread_attr_t *attr, func *f, void *arg); </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> <syntaxhighlight lang="c"> </syntaxhighlight> ==각주== [[분류:컴퓨터 시스템]]
Posix Threads
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록