Pthreads 아규먼트
아규먼트가 있는 함수의 스레드 생성
- pthread_create 함수
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void(* start_routine)(void *), void *arg)
- 아규먼트를 사용하지 않는 함수의 경우
- arg에 NULL 을 삽입하여 생성
- 아규먼트를 받는 함수의 경우
-arg를 통해 아규먼트를 함께 넘겨주어야 함
void *
- pthread_create 함수 타입
- 아규먼트/반환 타입이 void * 인 함수를 실행
- void * 인 이유
- void * 는 주로 임의의 data type을 가리키는 용도로 사용
- 임의의 data type을 아규먼트/반환 값으로 넘겨줄 수 있음
단일 아규먼트 전달
- 아규먼트로 정수 n을 받고 0 ~ n-1 의 숫자를 출력하는 경우
- pthread_create의 마지막 아규먼트 사용(void * 로 integer 변수를 가리킴)
- main 스레드의 경우
- 아규먼트(n)를 가리키는 포인터 설정
- 포인터를 아규먼트로 넘김
- ex) Main 함수의 n 값을 아규먼트로 받아 Thread에서 0 ~ n 까지의 값을 출력
- Main 함수에서 n의 주소값을 pthread_create 호출 시 함수의 전달인자로 넘겨준다.
- Thread가 실행할 함수(print_sequence)에서 매개변수를 int * 형으로 타입 변환한 후 가리키는 실제 값을 지역변수 n에 저장한다.
- 실행결과 Thread에서 출력한 결과가 제대로 출력됨을 알 수 있다.
반응형
'멀티코어 프로그래밍 > Pthread' 카테고리의 다른 글
Pthread 반환 값 (3) | 2022.05.10 |
---|---|
Pthread 아규먼트(2) (2) | 2022.05.09 |
Pthread 프로그래밍(2) (4) | 2022.05.04 |
Pthread 프로그래밍(1) - "Hello World" (6) | 2022.05.03 |
Pthread (9) | 2022.05.02 |
댓글