КДП/Штафетна палица

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Техника штафетне палице је концепт конкуретног програмирања из првог блока наставе и долази на првом колоквијуму за СИ и колоквијуму за РТИ.

Јануар 2021, 1. задатак

Debug: КДП/Јануар 2021 1. задатак
Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Поставка

Потребно је реализовати тајмер користећи приватне семафоре и технику предаје штафетне палице. Тајмер има две методе, прва је метода wakeme која омогућава да се дата нит блокирана n јединица времена (ово је аргумент), а друга је метода tick која означава да је истекла једна јединица времена.

Решење

Јануар 2022, 1. задатак

Debug: КДП/Јануар 2022 1. задатак

Поставка

Разматра се проблем синхронизације на баријери (Barrier Synchronization). Синхронизациона баријера омогућава нитима да на њој сачекају док тачно N нити не достигне одређену тачку у извршавању пре него што било која од тих нити не настави са својим извршавањем. Користећи расподељене бинарне семафоре и технику предаје штафетне палице решити овај проблем. Омогућити да се иста баријера може користити већи број пута.

Решење

sem arrived = 1;
sem continued = 0;
int blocked = 0;

const int N = 100;
void work1();
void work2();

void worker() {
    while (true) {
        work1();
        arrived.wait();
        blocked++;
        if (blocked != N) {
            arrived.signal();
            continued.wait();
        }
        blocked--;
        if (blocked > 0) {
            continued.signal();
        } else {
            arrived.signal();
        }
        work2();
    }
}

Јул 2020, 1. задатак

Debug: КДП/Јул 2020 1. задатак
Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Поставка

Користећи расподељене бинарне семафоре и технику предаје штафетне палице решити проблем читалаца и писаца (Readers - Writers Problem).

Решење

Фебруар 2021, 2. задатак

Debug: КДП/Фебруар 2021 2. задатак
Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Поставка

Посматра се семафор за регулацију саобраћаја на улици са једним пешачким прелазом. Када пешак стигне до пешачког прелаза, уколико је светло за пешаке зелено, он прелази улицу. Уколико је у моменту његовог доласка светло за пешаке црвено, он чека да се укључи зелено светло. Зелено светло за пешаке се укључује или након К секунди од појаве првог пешака који је затекао црвено светло, или након проласка C аутомобила од последњег активног зеленог светла за пешаке. Зелено светло за пешаке трајања G секунди се пали само уколико је испуњен неки од наведених услова и барем један пешак чека. Користећи расподељене бинарне семафоре и технику предаје штафетне палице написати програме за пешаке, аутомобиле и семафор за регулацију саобраћаја. Доступна је функција system_time() која враћа тренутно време система. Учесницима треба неко време да пређу улицу.

Решење