Меня попросили написать программу, которая будет иметь 2 потока и напечатать 5 случайных целых чисел, так что первый поток сгенерирует число, второй напечатает его.Затем первый сгенерирует 2-е число, второй поток напечатает его ... и т. Д., Используя мьютекс.
Мой код теперь выполняет его за один цикл.Как я могу расширить его, чтобы заставить потоки оправдывать методы 5 раз?
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void* generate (void*);
void* print (void*);
pthread_mutex_t m;
int number = 5;
int genNumber;
int main()
{
int i;
srandom(getpid());
pthread_t th[2];
pthread_mutex_init(&m,NULL);
pthread_create(&th[0],NULL,generate,NULL);
pthread_create(&th[1],NULL,print, NULL);
for (i = 0; i < 2; i++)
pthread_join(th[i], NULL);
pthread_mutex_destroy(&m);
return 0;
}
void* generate(void* arg)
{
pthread_mutex_lock(&m);
genNumber = random() % 9;
printf("Generated #1 \n");
pthread_mutex_unlock(&m);
}
void* print(void* arg)
{
pthread_mutex_lock(&m);
printf("The number is %d " , genNumber);
pthread_mutex_unlock(&m);
pthread_exit(NULL);
}