본문 바로가기

멀티코어 프로그래밍/Pthread13

Pthread 반환 값 Pthreads 반환 값 반환값이 있는 함수의 스레드 종료 pthread_join int pthread\_join(pthread\_t thread, void \*\*retval) 반환값을 사용하지 않는 함수의 경우 retval에 NULL을 넣음 반환값을 사용하는 함수의 경우 retval이 가리키는 곳이 함수의 반환 값이 저장됨 반환 값(void *)을 저장할 공간을 가리키는 포인터(void **)를 아규먼트로 넣어야 함 ex1) 잘못된 반환 값 전달 get_sum 함수에서 ret 변수에 값을 저장하여 주소를 return 한다. Main 함수에서 get_sum 함수의 return 값을 저장할 공간을 가리키는 포인터 ret 의 주소 값을 pthread_join 함수의 아규먼트로 넘겨준다. pthread_jo.. 2022. 5. 10.
Pthread 아규먼트(2) Pthreads 아규먼트 여러 개의 아규먼트 전달 두 정수 아규먼트 n, m을 받아 n, n+1 ~ m 을 출력하는 경우 아규먼트가 여러 개인 경우, 여러 아규먼트를 하나의 void * 를 사용해서 넘겨주어야 함 아규먼트 전달을 위한 구조체 사용 필요한 아규먼트를 모두 담은 구조체를 정의 함수 아규먼트의 void * 가 구조체를 가리키도록 함 main thread의 경우 구조체에 아규먼트를 저장하는 과정 필요 ex) n, m 두 개의 아규먼트를 받아 Thread에서 n, n+1 ~ m 까지의 값을 출력 구조체를 선언하여 구조체를 Thread가 실행할 함수의 아규먼트로 넘겨준다. args가 구조체를 가리키게 된다. 실행결과 결과 값이 정상적으로 출력됨을 알 수 있다. 이렇듯 여러 아규먼트를 넘길 때 구조체.. 2022. 5. 9.
Pthread 아규먼트(1) 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을 아규먼트/반환 값으로 넘겨줄 수 있음 단일 아규먼트 전달 아.. 2022. 5. 6.
Pthread 프로그래밍(2) Pthread 프로그래밍(2) 2개의 Thread를 이용하여 각각 foo 함수와 bar 함수를 실행시켜 2개의 Thread와 메인 Thread의 실행 순서를 확인 메인 함수와 foo, bar 함수에서 각각 반복문을 100회 실행한다. 실행 결과 "I'm main", "I'm foo", "I'm bar" 의 순서가 뒤죽박죽임을 알 수 있다. 즉 각각의 Thread는 메인 함수와 별도로 동시에 실행됨을 알 수 있다. 2개의 Thread를 이용하여 각각 foo 함수와 bar 함수를 실행시켜 Thread들의 실행 순서를 확인 foo 함수와 bar 함수에서 반복문을 100회 실행한다. 실행결과 Thread t1과 t2가 동시에 실행되어 결과가 뒤죽박죽임을 알 수 있다. 2022. 5. 4.
Pthread 프로그래밍(1) - "Hello World" Pthread 프로그래밍(1) eThread를 이용하여 "Hello World"를 출력 pthread.h 헤더 파일을 include 해주어야 한다. thread 변수 t1을 통해 스레드를 생성한 후 함수를 실행하여 "Hello World"를 출력한다. 컴파일 시 "-pthread"를 추가해주어야 한다, 실행 결과, 정상적으로 출력되었음을 알 수 있다. 2022. 5. 3.
Pthread Pthread POSIX(Portable Operation System Interface) 이식 가능한 운영체제 프로그래밍 환경의 필요성 대두 기존 운영체제 API들이 통일되지 않음 특정 운영체제에서 프로그래밍한 코드를 재사용할 수 없음 UNIX OS를 대상으로 한 API Process, Thread, Signal, Floating point exception, C library 등의 규약 제공 POSIX Threads API Pthreads POSIX standards for threads 스레드 생성, 소멸, 실행 제어를 위한 API 대부분의 UNIX 기반 운영체제에서 지원 병렬적으로 작동하는 소프트웨어의 작성을 위해서 제공되는 API Pthreads 모델 함수 호출을 스레드 생성으로 치환 특정 함수.. 2022. 5. 2.
728x90