본문 바로가기
멀티코어 프로그래밍/Pthread

Pthread Attributes(1)

by 기리의 개발로그 2022. 5. 17.

Pthread Attributes

##스레드 속성

int pthread_create(pthread_t *thread, const pthread_attr_t *att, void(* start_routine)(void *), void *arg) 

pthread_attr_t

  • 스레드 속성 타입
  • 새로 생성되는 스레드의 속성을 설정
  • Atrribute를 사용하여 설정 가능한 속성의 예시
    • Detached 스레드의 생성
    • User mode / Kernel mode 스레드의 생성
    • 스레드의 stack size 설정

스레드 종료와 자원 회수

  • pthread_join의 기능
    • 스레드 자원 반환
    • 스레드 종료 여부 확인
      • 스레드가 종료될때까지 pthread_join 함수가 끝나지 않음
      • thread 0 은 thread 1 이 끝날 때까지 blocked 상태에 들어감
    • 반환값 얻기


  • Join을 호출하지 않는 경우
    • thread 1 의 수행이 끝난 뒤 thread 1 에 배정된 자원이 회수되지 않음
    • Zombie thread
    • 메모리 누수 등의 문제


자원 회수의 필요성

  • main 함수는 100개의 thread를 만들고
    • case 1 : 전부 자원을 회수 후 10초간 sleep
    • case 2 : 자원을 회수하지 않고 10초간 sleep
  • foo 함수는 작업없이 즉시 실행을 끝냄
  • Case 1 : -DJOIN 옵션을 넣고 컴파일
    • join을 호출하는 코드가 활성화 됨
    • 실행파일을 백그라운드에서 실행
    • ps u 명령으로 사용중인 메모리 확인 가능
      • VSZ는 점유중인 가상 메모리 사이즈
  • Case 2 : -DJOIN 옵션없이 컴파일
    • join을 호출하는 코드가 비활성
    • VSZ가 증가
      • 점유중인 가상 메모리 사이즈가 증가
  • 생성한 스레드의 종료 여부 확인이 필요없는 경우
    • ex) main 함수와 생성된 스레드 함수가 독립적인 일을 할 경우
    • pthread_join에서 불필요한 대기시간 발생
  • Join 없이 thread의 자원을 회수하는 방법이 필요
    • Detached 스레드
반응형

'멀티코어 프로그래밍 > Pthread' 카테고리의 다른 글

Pthread Attributes(2)  (11) 2022.05.18
Pthread 동기화(1)  (7) 2022.05.15
Pthread를 이용한 병렬화  (13) 2022.05.13
Pthread Affinity  (13) 2022.05.12
Pthread 프로그래밍(3)  (5) 2022.05.11

댓글