SYSTEM PROGRAMMING
쓰레드의 생성 및 실행
뉴암스테르담
2015. 8. 5. 21:34
쓰레드의 생성 및 실행 ![]() ![]()
|
출처 : 열혈 강의 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 쓰레드 모델