[운영체제 4-4장. 스레드 라이브러리(Threads Library)]
[스레드 라이브러리]
: 프로그래머에게 스레드 생성 및 관리 위한 API를 제공.
[Pthreads]
: POSIX가 스레드 생성과 동기화를 위해 제정한 표준 API
- 사용자수준, 커널수준 둘다 지원
# Pthreads 예시 (함수명, 설명 잘 숙지해두기!)
=======================
#include <pthread.h> #include <stdio.h>
int sum; void *runner(void *param); # Pthreads 프로그램에서 별도의 스레드는 지정된 함수(여기선 runner함수)에서 실행된다.
int main(int argc, char *argv[]) { pthread_t tid; # pid처럼 thread 생성시 식별자(고유 id) 선언 = tid. pthread_attr_t attr; # thread의 속성.
if (argc!= 2) { fprintf(stderr, "usage: a.out <integer value>\n"); return -1; } if (atoi(argv[1] < 0) { fprintf(stderr, "%d must be >= 0\n",atoi(argv[i])); return -1; }
pthread_attr_init (&attr); # 속성을 지정(초기값) pthread_create(&tid,&atttr,runner,argv[1]); # 별도의 스레드(runner) 생성, <스레드 만들기> pthread_join(tid,NULL); # tid = 새로 생성할 runner thread의 식별자, 이후 thread 종료될때가지 대기
printf("sum = %d\n",sum); }
void *runner(void 8param) # runner 함수 생성. tid로 실행됨. { int i, upper = atoi(param); sum = 0;
for (i=1; i,upper; i++) sum += i;
pthread_exit(0) # thread 정상 종료 함수 } |
=======================
- 음이 아닌 정수의 합을 구하는 다중 스레드 프로그램을 제작하기 위한 Pthreads API를 보여줌.
- <스레드 만들기>
1) 기본스레드 : main 함수 실행 스레드가 시작(프로그램 실행시 시작됨)
2) 스레드 한개 추가 : pthread_create로 runner 함수 실행.
#윈도우 스레드 생략
#자바 스레드 생략
'기타 > [운영체제]' 카테고리의 다른 글
4-6장. 스레드와 관련된 문제들 (0) | 2019.04.06 |
---|---|
4-5장. 암묵적 스레딩 (0) | 2019.04.06 |
4-3장. 다중 스레드 모델 (0) | 2019.04.05 |
4-2장. 다중코어 프로그래밍 (0) | 2019.04.05 |
4-1장. 스레드 (0) | 2019.04.05 |