2 массива одинакового размера.Необходимо создать 2 потока, каждый из которых отвечает за 1 массив, потоки должны работать одновременно.После того, как оба потока задают один элемент (array_B [i] = ++ count;), массивы должны выводиться на экран, ждать нажатия клавиши, затем потоки должны продолжаться и т. Д.
IЯ не уверен на 100%, если это должно быть решено с мьютексами или нет.Он работает в определенной степени, но программа не останавливается после 1 обновления для каждого массива, как и предполагалось.
pthread_mutex_t mutex_A = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex_B = PTHREAD_MUTEX_INITIALIZER;
int array_A[NMax], array_B[NMax];
void *fun_A(void *arg)
{
int count = 0;
for (int i = 0 ; i < NMax ; ++i)
{
pthread_mutex_lock(&mutex_A);
array_A[i] = ++count;
pthread_mutex_unlock(&mutex_A);
}
return NULL;
}
void *fun_B(void *arg)
{
int count = 0;
for (int i = 0 ; i < NMax ; ++i)
{
pthread_mutex_lock(&mutex_B);
array_B[i] = ++count;
pthread_mutex_unlock(&mutex_B);
}
return NULL;
}
void Print()
{
system("cls");
for (int i = 0 ; i < NMax ; ++i)
printf("%d ", array_A[i]);
printf("\n\n");
for (int i = 0 ; i < NMax ; ++i)
printf("%d ", array_B[i]);
getch();
}
int main()
{
pthread_t A_th, B_th;
pthread_create(&A_th, NULL, &fun_A, NULL);
pthread_create(&B_th, NULL, &fun_B, NULL);
while (1)
{
pthread_mutex_lock(&mutex_A);
pthread_mutex_lock(&mutex_B);
Print();
pthread_mutex_unlock(&mutex_A);
pthread_mutex_unlock(&mutex_B);
}
pthread_join(A_th, NULL);
pthread_join(B_th, NULL);
return 0;
}