41 lines
934 B
C
41 lines
934 B
C
|
#include <stdio.h>
|
|||
|
#include <pthread.h>
|
|||
|
#include <stdlib.h>
|
|||
|
|
|||
|
void *thread_task(void *data)
|
|||
|
{
|
|||
|
int *arr = (int *)data;
|
|||
|
int total = 0;
|
|||
|
for (int i = arr[0]; i <= arr[1]; i++)
|
|||
|
{
|
|||
|
total += i;
|
|||
|
}
|
|||
|
int *result = malloc(sizeof(int));
|
|||
|
*result = total;
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
int main()
|
|||
|
{
|
|||
|
pthread_t tid;
|
|||
|
int arr[2] = {1, 100};
|
|||
|
if (pthread_create(&tid, NULL, thread_task, arr) != 0)
|
|||
|
{
|
|||
|
perror("pthread_create");
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
int *task_result;
|
|||
|
// pthread_join函数等待子线程执行完毕,并将子线程的返回值存储在task_result指针中。注意,这里需要将task_result的类型为int*的指针的地址传递给pthread_join函数。
|
|||
|
if (pthread_join(tid, (void **)&task_result) != 0)
|
|||
|
{
|
|||
|
perror("pthread_join");
|
|||
|
return 1;
|
|||
|
}
|
|||
|
|
|||
|
printf("线程返回的结果是: %d\n", *task_result);
|
|||
|
free(task_result);
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|