Я пытаюсь разобраться в проблеме с pthreads в C. Хотя мой второй поток возвращает значение правильно, первый просто дает мне (я полагаю) адрес памяти.
Код должен выполнять следующее:
Создать 2 потока, которые вычисляют факториал и экспоненциальное значение заданного числа из консоли.
Факториал кодируется какФункция и экспоненциальный калькулятор в основном коде.
Спасибо за любую помощь!
#include <pthread.h>
#include <stdio.h>
void *fac_x(void *x_void_ptr)
{
int *x_ptr = (int *)x_void_ptr;
int counter = *x_ptr;
for (int i = 1; i < counter ; i++) {
*x_ptr *= i;
}
printf("x factorising finished\n");
return NULL;
}
int main()
{
int x,y, counter;
printf("Enter an integer: ");
scanf("%d",&x);
y = x;
counter = y;
printf("Input = %d\n",x);
pthread_t fac_x_thread;
if(pthread_create(&fac_x_thread, NULL, fac_x, &x)) {
fprintf(stderr, "Error creating thread\n");
return 1;
}
while (counter != 0) {
y *= y;
counter--;
}
if(pthread_join(fac_x_thread, NULL)) {
fprintf(stderr, "Error joining thread\n");
return 2;
}
printf("Factorial: %d \nExponential: %d\n", x, y);
return 0;
}