You are on page 1of 2

Претпоставете дека имате пет конкурентни нишки во рамки на еден процес каде секоја

извршува по една функцијата и тоа: нишка 1 е со приоритет 1 и ја извршува


incrementX(), нишката 2 е со приоритет 2 и ја извршува decrementX(), нишката 3 е со
приоритет 3 и ја извршува adjustX(), нипката 4 е со приоритет 4 и ја извршува
multiplyByY() додека пак, нишката 5 е со приоритет 5 и ја извршува divideByY().
Како дополнителна информација познато ви е дека распоредувачот секогаш дава
предност на нишката со поголем приоритет (5 е најголем приоритет, 1 е најмал).

#include typedef int semaphore;


semaphore sA = 0, sB = 0, sC = 0;
int x = 11;
int y = 5;

void incrementX()
{
x += 1;
Up(&sA);
}

void decrementX()
{
Down(&sB);
x -= 10;
}

void adjustX()
{
Down(&sC);
x += 1;
Up(&sB);
}

void multiplyByY()
{
Down(&sA);
x *= y;
Up(&sC);
}

void divideByY()
{
Down(&sC);
x /= y;
Up(&sB);
}

Вредноста на променливата x e Answer

, притоа процесот Answer


ќе биде
блокиран и притоа ://ova ne e tocno! -- со избирање на точен одговор

нишката 1 ќе заврши Answer


прва со избирање на точен одговор
нишката 2 ќе заврши Answer
втора со избирање на точен одговор
нишката 3 ќе заврши Answer
нема да заврши со избирање на точен одговор
нишката 4 ќе заврши Answer
трета со избирање на точен одговор
нишката 5 ќе заврши Answer
петта со избирање на точен одговор псс!! - овие не се точни одговори

You might also like