4-4장. 스레드 라이브러리

기타/[운영체제]

2019. 4. 6. 21:18

[운영체제 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