SYSTEM PROGRAMMING

쓰레드의 생성 및 실행

뉴암스테르담 2015. 8. 5. 21:34
쓰레드의 생성 및 실행  시스템프로그래밍 

2013.04.03. 21:03  수정  삭제

복사http://blog.naver.com/pwk0810/40186226020

전용뷰어 보기

 

출처 : 열혈 강의 TCP/IP PROGRAMMING

 

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

 

pthread_t t_id;

int thread_param = 5;

 

if(pthread_create(&t_id, NULL, thread_main , (void*)&thread_param )!= 0)

 

void thread_main(void * arg)

{

int cnt = *((int*)arg);

 

 

쓰레드 관련 컴파일시 -lpthread 옵션을 추가해서 쓰레드 라이브러리의 링크를 별도로 지시해야 한다

 

int pthread_join(pthread_t thread, void **status);

 

 

  • 쓰레드의 실행 흐름을 조절한다.
  • thread 매개별수에 전달되는 ID의 쓰레드가 종료될때 까지 함수는 반환되지 않는다.
  • status 쓰레드의 main 함수가 반환되는 값이 저장될 포인터의 변수의 주소값을 전달
  • thread인자로 전달되는 쓰레드가 종료될때 까지 , 이 하수를 호출한 프로세스를 대기 상태로 둔다. thread main 함수를 얻을 수 있다. 

+ 임계 영역 내에서 호출이 가능한 함수
  • 둘 이상의 쓰레드가 동시에 실행하면 문제를 일으키는 코드 블록을 가르켜 임계 영역이라고 한다.
  • 쓰레드에 안전한 함수 
  • 쓰레드에 불안전한 함수
  • 이것은 임계 영역의 유무를 뜻하는 것은 아니며,  쓰레드에 안전한 함수도 임계 영역이 존재할 수 있다.
  • 기본적으로 제공되는 대부분의 표준 함수들은 쓰레드에 안전하다. 
  • 헤더 파일 이전에 매크로 _REENTRANT 를 정의 한다.
    • 쓰레드에 안전한 함수로 호출문을 변경한다.

+Worker 쓰레드 모델