- Liczba wątków powinna być określona przez #define NUM_THREADS liczba
- Wersja programu z wykorzystaniem mutexu i semafora
Napisać program, w którym każdy wątek generuje dwie liczby losowe. Następnie wątek główny
oblicza sumy wygenerowane przez poszczególne wątki i przekazuje informację do wątków czy
dany wątek wygrał czy przegrał. Na końcu każdy wątek wypisuje komunikat wygrałem lub
przegrałem.
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <pthread.h>
#define liczba_watkow 5
pthread_mutex_t blokada = PTHREAD_MUTEX_INITIALIZER; // inicjalizacja i deklaracja mutexa
void* watek(void* arg) {
int id = *(int*)arg;
int liczba1 = rand() % 100;
int liczba2 = rand() % 100;
pthread_mutex_lock(&blokada); // Zablokuj blokada
pthread_mutex_unlock(&blokada); // Odblokuj blokada
}
int main()
{
srand(time(NULL));
pthread_t threads[liczba_watkow];
int thread_ids[liczba_watkow];
// Tworzenie wątków
for (int i = 0; i < liczba_watkow; ++i)
{
thread_ids[i] = i;
pthread_create(&threads[i], NULL, watek, (void*)&thread_ids[i]);
}
// Sprawdzanie sum wygenerowanych przez wątki
// Oczekiwanie na zakończenie wątków
for (int i = 0; i < liczba_watkow; ++i)
{
pthread_join(threads[i], NULL);
}
return 0;
}
Czy możecie mi pomóc z dokończeniem tego zadania? Nie rozumiem jak można zliczyć sumę w wątku głównym ( funkcji main() ) a następnie przekazać ją znowu do wątku