1// thread_return.c
2// 스레드 반환값 받기
3#include <stdio.h>
4#include <stdlib.h>
5#include <pthread.h>
6
7void* calculate_sum(void* arg) {
8 int n = *(int*)arg;
9
10 // 동적 할당하여 결과 반환
11 long* result = malloc(sizeof(long));
12 *result = 0;
13
14 for (int i = 1; i <= n; i++) {
15 *result += i;
16 }
17
18 printf("스레드: 1부터 %d까지 합 계산 완료\n", n);
19 return result;
20}
21
22int main(void) {
23 pthread_t thread;
24 int n = 100;
25
26 pthread_create(&thread, NULL, calculate_sum, &n);
27
28 // 반환값 받기
29 void* ret_val;
30 pthread_join(thread, &ret_val);
31
32 long* result = (long*)ret_val;
33 printf("결과: %ld\n", *result);
34
35 free(result); // 동적 할당된 메모리 해제
36 return 0;
37}