Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Реферат_Томышев_А_2309.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
599 Кб
Скачать
☆

Приложение б

Код программы 2.

#include <stdlib.h>

#include <stdio.h>

#include <errno.h>

#include <pthread.h>

#include <unistd.h>

pthread_mutex_t lock1;

pthread_mutex_t lock2;

int count=0;

void* thread_func1(void *arg)

{

int i;

int id_t=*(int *) arg;

printf(" Thread %d Start \n",id_t);

pthread_mutex_lock(&lock1);

pthread_mutex_lock(&lock2);

++;

//sleep(1);

pthread_mutex_unlock(&lock2);

pthread_mutex_unlock(&lock1);

sleep(1);

printf(" Thread %d Finish \n",id_t);

}

void* thread_func2(void *arg)

count

{

int i;

int id_t=*(int *) arg;

printf(" Thread %d Start \n",id_t);

pthread_mutex_lock(&lock2);

pthread_mutex_lock(&lock1);

count++;

sleep(1);

pthread_mutex_unlock(&lock1);

pthread_mutex_unlock(&lock2);

printf(" Thread %d Finish \n",id_t);

}

int main(int argc, char**argv) {

pthread_t th1,th2;

pthread_mutex_init(&lock1,NULL);

pthread_mutex_init(&lock2,NULL);

int id1=1,id2=2,result;

result = pthread_create(&th1,NULL, thread_func1,&id1);

if(result!=0){

perror("er 111");

return EXIT_FAILURE;

}

result = pthread_create(&th2,NULL, thread_func2,&id2);

if(result!=0){

perror("er 222");

return EXIT_FAILURE;

}

while(count<2){

;

}

/*

result= pthread_join(th1,NULL);

if(result!=0){

perror("join 111");

return EXIT_FAILURE;

}

result= pthread_join(th2,NULL);

if(result!=0){

perror("join 222");

return EXIT_FAILURE;

}*/

pthread_mutex_destroy(&lock1);

pthread_mutex_destroy(&lock2);

printf(" DONE\n");

return EXIT_SUCCESS;

}