OS
[운영체제] 11. Concurrency, Concepts, and Case Studies
김치말이삼겹살
2024. 3. 28. 16:00
- Thread Creation
#include <pthread.h> int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void* (*start_routine)(void*), void* arg);
- ‘thread’: 상호작용할 thread 명시
- ‘attr’: thread의 속성 명시
- ‘start_routine’: thread가 시작할 함수
- ‘arg’: 함수의 인자
int pthread_create(..., //first two args are the same void* (*start_routine) (int), int arg); int pthread_create(..., //first two args are the same int* (*start_routine) (void*), void* arg);
- Wait for a thread to complete
int pthread_join(pthread_t thread, void **value_ptr);
- ‘thread’ : 어떤 스레드한테 기다리라고 할지
- ‘valute_ptr’: return 값을 pointer에 담기→ 이경우를 대비하여 함수의 인자로 값을 받는다
void *mythread(void *arg) { int m = (int)arg; printf("%d \n",m); return (void*) (arg + 1); } int main(int argc, char *argv[]) { pthread_t p; int rc, m; pthread_create(&p, NULL, mythread, (void *) 100); pthread_join(pm (void **) &m); printf("returned %d\n", m); return 0; }
- → thread의 return value가 time slice를 지나 자원 회수가 되면서 de-allocate될 수 있음
반응형