<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%94%D0%9F%2F%D0%9A1_2022</id>
	<title>КДП/К1 2022 - Историја измена</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%94%D0%9F%2F%D0%9A1_2022"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9A1_2022&amp;action=history"/>
	<updated>2026-06-04T09:12:06Z</updated>
	<subtitle>Историја измена ове странице на пројекту</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9A1_2022&amp;diff=5680&amp;oldid=prev</id>
		<title>Fedja: kategorija zadatka</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9A1_2022&amp;diff=5680&amp;oldid=prev"/>
		<updated>2023-02-11T17:06:57Z</updated>

		<summary type="html">&lt;p&gt;kategorija zadatka&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 11. фебруар 2023. у 19:06&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Ред 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- Поставка овог рока може се наћи са [https://rti.etf.bg.ac.rs/rti/ir3kdp/rokovi/2122/KDP_2022_feb.pdf странице предмета.] --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;!-- Поставка овог рока може се наћи са [https://rti.etf.bg.ac.rs/rti/ir3kdp/rokovi/2122/KDP_2022_feb.pdf странице предмета.] --&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 1. задатак ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{категорија|&lt;/ins&gt;1. задатак&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Синхронизациони_алгоритми}} &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Поставка ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Поставка ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Написати и објасните&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; Андерсенов алгоритам за критичну секцију (&amp;#039;&amp;#039;coarse grain&amp;#039;&amp;#039;). Реализовати (&amp;#039;&amp;#039;fine grain&amp;#039;&amp;#039;) верзију алгоритма уколико би на датом процесору умест &amp;#039;&amp;#039;FA&amp;#039;&amp;#039; постојала операција &amp;#039;&amp;#039;Compare-And-Swap&amp;#039;&amp;#039; која би недељиво обављала (&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; inline&amp;gt;CAS(a, b, c) : &amp;lt; if (a == c) { c = b; return true; } else { a = c; return false; } &amp;gt;&amp;lt;/syntaxhighlight&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Написати и објасните&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; Андерсенов алгоритам за критичну секцију (&amp;#039;&amp;#039;coarse grain&amp;#039;&amp;#039;). Реализовати (&amp;#039;&amp;#039;fine grain&amp;#039;&amp;#039;) верзију алгоритма уколико би на датом процесору умест &amp;#039;&amp;#039;FA&amp;#039;&amp;#039; постојала операција &amp;#039;&amp;#039;Compare-And-Swap&amp;#039;&amp;#039; која би недељиво обављала (&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; inline&amp;gt;CAS(a, b, c) : &amp;lt; if (a == c) { c = b; return true; } else { a = c; return false; } &amp;gt;&amp;lt;/syntaxhighlight&amp;gt;).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Fedja</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9A1_2022&amp;diff=5587&amp;oldid=prev</id>
		<title>Fedja: kategorije zadataka</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9A1_2022&amp;diff=5587&amp;oldid=prev"/>
		<updated>2023-02-11T02:56:11Z</updated>

		<summary type="html">&lt;p&gt;kategorije zadataka&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 11. фебруар 2023. у 04:56&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l43&quot;&gt;Ред 43:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 2. задатак ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{категорија|&lt;/ins&gt;2. задатак&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Семафори}} &lt;/ins&gt;==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Поставка ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Поставка ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Посматра се забавни парк са N аутића који могу да приме по једну особу (&amp;#039;&amp;#039;Bumper Cars Problem&amp;#039;&amp;#039;). M особа се шета по парку и може да одлучи да се провоза. Особа која жели да се вози стаје у ред и чека слободни ауто. Када се ослободи ауто и претходни возач напусти ауто прва особа из реда добија прилику да вози ауто и да се судара са другим аутима. Након неког времена особа завршава вожњу, враћа ауто на одговарајуће место, напушта ауто и одлази да се шета по парку. Особа може више пута да дође да се вози. Уколико постоји више аута, особа бира онај који је најдуже чекао на вожњу. Уколико тренутно нема особа које желе да се возе ауто стаје у ред и чека да дође особа. Користећи семафоре написати програм који решава овај проблем.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Посматра се забавни парк са N аутића који могу да приме по једну особу (&amp;#039;&amp;#039;Bumper Cars Problem&amp;#039;&amp;#039;). M особа се шета по парку и може да одлучи да се провоза. Особа која жели да се вози стаје у ред и чека слободни ауто. Када се ослободи ауто и претходни возач напусти ауто прва особа из реда добија прилику да вози ауто и да се судара са другим аутима. Након неког времена особа завршава вожњу, враћа ауто на одговарајуће место, напушта ауто и одлази да се шета по парку. Особа може више пута да дође да се вози. Уколико постоји више аута, особа бира онај који је најдуже чекао на вожњу. Уколико тренутно нема особа које желе да се возе ауто стаје у ред и чека да дође особа. Користећи семафоре написати програм који решава овај проблем.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Fedja</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9A1_2022&amp;diff=4239&amp;oldid=prev</id>
		<title>KockaAdmiralac: Moja rešenja kolokvijuma od danas</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9A1_2022&amp;diff=4239&amp;oldid=prev"/>
		<updated>2022-04-01T21:23:47Z</updated>

		<summary type="html">&lt;p&gt;Moja rešenja kolokvijuma od danas&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;lt;!-- Поставка овог рока може се наћи са [https://rti.etf.bg.ac.rs/rti/ir3kdp/rokovi/2122/KDP_2022_feb.pdf странице предмета.] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Написати и објасните&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; Андерсенов алгоритам за критичну секцију (&amp;#039;&amp;#039;coarse grain&amp;#039;&amp;#039;). Реализовати (&amp;#039;&amp;#039;fine grain&amp;#039;&amp;#039;) верзију алгоритма уколико би на датом процесору умест &amp;#039;&amp;#039;FA&amp;#039;&amp;#039; постојала операција &amp;#039;&amp;#039;Compare-And-Swap&amp;#039;&amp;#039; која би недељиво обављала (&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; inline&amp;gt;CAS(a, b, c) : &amp;lt; if (a == c) { c = b; return true; } else { a = c; return false; } &amp;gt;&amp;lt;/syntaxhighlight&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;#039;&amp;#039;Coarse-grain&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
const int N = 100;&lt;br /&gt;
int slot = 0;&lt;br /&gt;
bool slots[N];&lt;br /&gt;
&lt;br /&gt;
void worker(int id) {&lt;br /&gt;
    while (true) {&lt;br /&gt;
        &amp;lt; int myslot = slot; slot = slot % N + 1; &amp;gt;&lt;br /&gt;
        &amp;lt; await (slots[myslot]); &amp;gt;&lt;br /&gt;
        // Критична секција&lt;br /&gt;
        &amp;lt; slots[myslot] = false;&lt;br /&gt;
        slots[myslot % N + 1] = true; &amp;gt;&lt;br /&gt;
        // Некритична секција&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Fine-grain&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
const int N = 100;&lt;br /&gt;
int slot = 0;&lt;br /&gt;
bool slots[N];&lt;br /&gt;
&lt;br /&gt;
void worker(int id) {&lt;br /&gt;
    while (true) {&lt;br /&gt;
        int myslot = slot;&lt;br /&gt;
        while (!CAS(myslot, myslot % N + 1, slot)) skip();&lt;br /&gt;
        while (!slots[myslot]) skip();&lt;br /&gt;
        // Критична секција&lt;br /&gt;
        slots[myslot] = false;&lt;br /&gt;
        slots[myslot % N + 1] = true;&lt;br /&gt;
        // Некритична секција&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Посматра се забавни парк са N аутића који могу да приме по једну особу (&amp;#039;&amp;#039;Bumper Cars Problem&amp;#039;&amp;#039;). M особа се шета по парку и може да одлучи да се провоза. Особа која жели да се вози стаје у ред и чека слободни ауто. Када се ослободи ауто и претходни возач напусти ауто прва особа из реда добија прилику да вози ауто и да се судара са другим аутима. Након неког времена особа завршава вожњу, враћа ауто на одговарајуће место, напушта ауто и одлази да се шета по парку. Особа може више пута да дође да се вози. Уколико постоји више аута, особа бира онај који је најдуже чекао на вожњу. Уколико тренутно нема особа које желе да се возе ауто стаје у ред и чека да дође особа. Користећи семафоре написати програм који решава овај проблем.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
const int N = 100;&lt;br /&gt;
const int M = 100;&lt;br /&gt;
&lt;br /&gt;
// Комуникација између аутомобила и особа&lt;br /&gt;
sem carSems[N];&lt;br /&gt;
sem peopleSems[M];&lt;br /&gt;
// Међусобно искључивање при приступу глобалном стању&lt;br /&gt;
sem mutex = 1;&lt;br /&gt;
// Подаци заштићени mutex-ом:&lt;br /&gt;
list&amp;lt;int&amp;gt; freeCars;&lt;br /&gt;
list&amp;lt;int&amp;gt; freePeople;&lt;br /&gt;
int mutexId;&lt;br /&gt;
&lt;br /&gt;
void car(int carId) {&lt;br /&gt;
    int personId;&lt;br /&gt;
    while (true) {&lt;br /&gt;
        mutex.wait();&lt;br /&gt;
        if (freePeople.size() &amp;gt; 0) {&lt;br /&gt;
            personId = freePeople.front();&lt;br /&gt;
            freePeople.pop_front();&lt;br /&gt;
            mutexId = carId;&lt;br /&gt;
            peopleSems[personId].signal();&lt;br /&gt;
            // Нема ослобађања mutex, чекамо да особа прочита mutexId&lt;br /&gt;
            carSems[carId].wait();&lt;br /&gt;
        } else {&lt;br /&gt;
            freeCars.push_back(carId);&lt;br /&gt;
            mutex.signal();&lt;br /&gt;
            carSems[carId].wait();&lt;br /&gt;
            personId = mutexId;&lt;br /&gt;
            // Ослобађамо mutex који је особа закључала&lt;br /&gt;
            mutex.signal();&lt;br /&gt;
            // Обавештавамо особу да смо прочитали mutexId&lt;br /&gt;
            peopleSems[personId].signal();&lt;br /&gt;
        }&lt;br /&gt;
        // Особа контролише ауто, чекамо да нас особа обавести кад заврши&lt;br /&gt;
        carSems[carId].wait();&lt;br /&gt;
        // Враћени смо назад&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void person(int personId) {&lt;br /&gt;
    int carId;&lt;br /&gt;
    while (true) {&lt;br /&gt;
        // Шетамо&lt;br /&gt;
        mutex.wait();&lt;br /&gt;
        if (freeCars.size() &amp;gt; 0) {&lt;br /&gt;
            carId = freeCars.front();&lt;br /&gt;
            freeCars.pop_front();&lt;br /&gt;
            mutexId = personId;&lt;br /&gt;
            carSems[carId].signal();&lt;br /&gt;
            // Нема ослобађања mutex, чекамо да аутомобил прочита mutexId&lt;br /&gt;
            peopleSems[personId].wait();&lt;br /&gt;
        } else {&lt;br /&gt;
            freePeople.push_back(personId);&lt;br /&gt;
            mutex.signal();&lt;br /&gt;
            peopleSems[personId].wait();&lt;br /&gt;
            carId = mutexId;&lt;br /&gt;
            // Ослобађамо mutex који је аутомобил закључао&lt;br /&gt;
            mutex.signal();&lt;br /&gt;
            // Обавештавамо аутомобил да смо прочитали mutexId&lt;br /&gt;
            carSems[carId].signal();&lt;br /&gt;
        }&lt;br /&gt;
        // Возимо и на крају обавестимо аутомобил да смо завршили&lt;br /&gt;
        carSems[carId].signal();&lt;br /&gt;
        // Настављамо шетњу&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:КДП]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
</feed>