Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_4_Bolyuh.docx
Скачиваний:
2
Добавлен:
18.07.2019
Размер:
108.49 Кб
Скачать

Void *funcT1(void *arg)

{

x = x*5;

S1.Vsem();

}

Void *funcT2(void *arg)

{

y = y+2;

S2.Vsem();

S2.Vsem();

}

void *funcT3(void *arg)

{

S1.Psem();

S2.Psem();

x = x + 2;

S3. Vsem();

}

void *funcT4(void *arg)

{

S2.Psem();

y=y-3;

S3. Vsem();

}

void *funcT5(void *arg)

{

S3.Psem();

S3.Psem();

y=x*y;

}

int main(int arg, char *argv[])

{

S1.MonitorInit();

S2.MonitorInit();

S3.MonitorInit();

pthread_t T1,T2,T3,T4,T5;

pthread_create(&T1,NULL,funcT1,NULL);

pthread_create(&T2,NULL,funcT2,NULL);

pthread_create(&T3,NULL,funcT3,NULL);

pthread_create(&T4,NULL,funcT4,NULL);

pthread_create(&T5,NULL,funcT5,NULL);

pthread_join(T1, NULL);

pthread_join(T2, NULL);

pthread_join(T3, NULL);

pthread_join(T4, NULL);

pthread_join(T5, NULL);

cout<<"y = "<<y<<'\n';

cin.get();

return 0;

}

Висновок: В ході лабораторної роботи було використано механізм умовних змінних та моніторів для реалізації паралельних алгоритмів, навчено вирішувати задачу розподілу ресурсів, використовувати глобальні інваріанти для аналізу та розробки паралельних програм.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]