Zrobiłem program, który tworzy wątek i porównuje 2 liczby(zmiennoprzecinkowe) i wybiera mniejszą. Zrobiłem i działa normalnie ale niestety muszę jeszcze go tak zmienić aby wątek tylko porównywał liczby a dopiero w głównej funkcji "main" przekazywał wynik. Potrzeba "printf" usunąć z wątku i jakoś przekazać wynik do głównej funkcji by dopiero w ostatnim "printf" w programie pobierało wynik. Kombinowałem różnie ale nie działa albo nie chce mi pokazywać wyniku. Jakby ktoś coś podpowiedział było by dobrze.
Nigdy nie robiłem wątków, ale na programowaniu to się troszkę znam
Ja to bym zrobił tak, albo wynik jest zmienna globalną i funkcja mniej do niej zapisuje wynik, albo do wspomnianej funkcji dodajesz jeszcze jedne parametr wynik i to by było najbardziej eleganckie rozwiązanie.
Próbowałem już właśnie zamiast tych printf wstawiać parametr wynik i przypisałem do niego te wartości tablicowe ale coś chyba jeszcze trzeba dodać bo w wyniku pokazywało "Liczba mniejsza to 0" zamiast mniejszej liczby.... nie wiem właśnie co jeszcze musze dopisać żeby ten wynik odczytywany był w tej głównej funkcji (tam już na końcu )
...
void* mniej (void* arg, double wynik)
{
...
if(tab[0]<tab[1])
{
printf("MNIEJSZA TO %lf\n", tab[0]);
wynik = tab[0];
}
else
{
printf("MNIEJSZA TO %lf\n", tab[1]);
wynik = tab[1];
}
// a może sa takie same, aa
}
int main ()
{
...
double wynik;
...
if (pthread_create (&thread, NULL, &mniej, (void*) &ta), (void *) &wynik);
//printf("blad \n");
// po co to??
/// -----
/* Czekaj na zakonczenie watka i odbierz wynik. */
if (pthread_join (thread, (void **) &wynik)); {
//printf("blacz przy konczeniu watku\n");
exit(2);
}
/// -----
/* Wydrukuj mniejsza liczbe. */
printf("Mniejsza liczba to %lf\n", &wynik);
return 0;
}