Я не понимаю, что функция pthread_exit (& sum) делает ниже кода?
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <sys/types.h>
void *
sum_runner(void *arg)
{
int *limit_ptr = (int *) arg;
int limit = *limit_ptr;
int sum = 0;
for (int i; i <= limit; i++) {
sum += i;
}
printf("sum is for thread %lu is %d : \n", pthread_self(), sum);
pthread_exit(&sum);
}
int
main(int argc, char **argv)
{
if (argc < 2) {
printf("You entered only number %s : \n", argv[0]);
exit(-1);
}
int nOfThreads = argc - 1;
int i;
int limit[nOfThreads];
printf("limit = %d \n", nOfThreads);
for (i = 0; i < nOfThreads; i++) {
limit[i] = atoll(argv[i + 1]);
printf("%d, %p\n", limit[i], &limit[i]);
pthread_t tid[i];
pthread_create((tid + i), NULL, sum_runner, (limit + i));
}
for (i = 0; i < nOfThreads; i++) {
pthread_t tid[i];
pthread_join(*(tid + i), NULL);
}
}
Я новичок в pthread, я знаю, pthread_exit()
функция используется для выхода из вызывающий поток, но я не понимаю, почему &sum
необходимо передать функции pthread_exit
, чтобы получить правильный вывод.