<?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%9B%D0%B0%D0%B1_1_%D0%BD%D0%B0%D0%B4%D0%BE%D0%BA%D0%BD%D0%B0%D0%B4%D0%B0_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%9B%D0%B0%D0%B1_1_%D0%BD%D0%B0%D0%B4%D0%BE%D0%BA%D0%BD%D0%B0%D0%B4%D0%B0_2022"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_%D0%BD%D0%B0%D0%B4%D0%BE%D0%BA%D0%BD%D0%B0%D0%B4%D0%B0_2022&amp;action=history"/>
	<updated>2026-06-04T06:13:05Z</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%9B%D0%B0%D0%B1_1_%D0%BD%D0%B0%D0%B4%D0%BE%D0%BA%D0%BD%D0%B0%D0%B4%D0%B0_2022&amp;diff=4430&amp;oldid=prev</id>
		<title>KockaAdmiralac: Jučerašnji lab 1 po Bogdanovom predanju</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9A%D0%94%D0%9F/%D0%9B%D0%B0%D0%B1_1_%D0%BD%D0%B0%D0%B4%D0%BE%D0%BA%D0%BD%D0%B0%D0%B4%D0%B0_2022&amp;diff=4430&amp;oldid=prev"/>
		<updated>2022-06-23T10:32:49Z</updated>

		<summary type="html">&lt;p&gt;Jučerašnji lab 1 po &lt;a href=&quot;/w/index.php?title=%D0%9A%D0%BE%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D0%BA:Randommen&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Корисник:Randommen (страница не постоји)&quot;&gt;Bogdanovom&lt;/a&gt; predanju&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Надокнада прве лабораторијске вежбе 2022. године&amp;#039;&amp;#039;&amp;#039; одржана је 22. јуна. Испод се налази поставка задатка за групу Н-А, док су се у групи Н-Б као синхронизационе примитиве користили региони и катанци.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
Потребно је написати Јава апликацију која проналази све оне филмови који имају исти број режисера као и филм који има максималан број режисера. &amp;#039;&amp;#039;&amp;#039;&amp;lt;u&amp;gt;Решење мора бити максимално конкурентно и отпорно на прекиде. Дозвољено је додавати нове редове у дати костур апликације и додавати аргументе конструкторима, али није дозвољено брисати постојеће редове.&amp;lt;/u&amp;gt;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Делови апликације:&lt;br /&gt;
* Класа &amp;lt;code&amp;gt;Producer&amp;lt;/code&amp;gt; обрађује улазну датотеку са филмовима и информације о сваком појединачном филму убацује у дељени објекат за даљу обраду. Ова класа обраду обавља у свом току контроле. Подаци о филмовима се читају ред по ред из архиве са филмским режисерима и сценаристима (&amp;#039;&amp;#039;title.crew.tsv.gz&amp;#039;&amp;#039;). Дељени објекат који се овде користи мора користити мониторе за синхронизацију, који морају бити ФИФО.&lt;br /&gt;
* Класа &amp;lt;code&amp;gt;Consumer&amp;lt;/code&amp;gt; обрађује филмове из дељеног објекта и резултате обраде на крају прослеђује на даљу обраду. Оба класа обраду обавља у свом току контроле. Класа чита информације о неком филму из дељеног објекта и тражи локални максимум броја режисера. Локално чува информације о свим својим обрађеним филмовима. Када више не буде било филмова за даљу обраду, информације о филмовима са локалним максимумом броја режисера прослеђује даље само уколико је пронађени локални максимум једнак глобалном максимуму режисера, користећи следећи дељени објекат. Дозвољено је користити још један дељени објекат за ову синхронизацију, уколико је потребно, и у том случају треба да користи семафоре за синхронизацију. Додатно, &amp;lt;code&amp;gt;Consumer&amp;lt;/code&amp;gt; на сваких N (задаје се) обрађених филмова, као и на крају, шаље информацију о броју обрађених филмова користећи посебан дељени објекат.&lt;br /&gt;
* Класа &amp;lt;code&amp;gt;Combiner&amp;lt;/code&amp;gt; прикупља филмове са максималним бројем режисера. Ова класа обраду обавља у свом току контроле. Класа преузима податке из дељеног објекта и након завршене обраде резултат убацује у следећи дељени објекат.&lt;br /&gt;
* Класа &amp;lt;code&amp;gt;Printer&amp;lt;/code&amp;gt; периодично (задаје се) штампа информације о броју филмова које су обрадиле све инстанце класе &amp;lt;code&amp;gt;Consumer&amp;lt;/code&amp;gt;, све док се не прикупе коначни подаци, и на крају штампа њих штампа&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; на основу података које је доставила класа &amp;lt;code&amp;gt;Combiner&amp;lt;/code&amp;gt;. Ова класа обраду обавља у свом току контроле. Излаз апликације је листа која садржи информације о филмовима са истим бројем режисера као и филм са максималним бројем режисера.&lt;br /&gt;
* Класа &amp;lt;code&amp;gt;Main&amp;lt;/code&amp;gt; тестира овај систем. Класа у својој почетној main функцији креира све потребне дељене објекте, покреће једну инстанцу класе &amp;lt;code&amp;gt;Producer&amp;lt;/code&amp;gt;, већи (подесив) број инстанци класе &amp;lt;code&amp;gt;Consumer&amp;lt;/code&amp;gt;, једну инстанцу класе &amp;lt;code&amp;gt;Combiner&amp;lt;/code&amp;gt; и једну инстанцу класе &amp;lt;code&amp;gt;Printer&amp;lt;/code&amp;gt;. Након комплетно завршене обраде, штампа колико је износило укупно време обраде за дати број нити које раде обраду.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ниједна класа нити (&amp;lt;code&amp;gt;Producer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Consumer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Combiner&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Printer&amp;lt;/code&amp;gt;) не сме да зна за број инстанци класе Consumer!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Решење ==&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Лабораторијске вежбе]]&lt;br /&gt;
[[Категорија:КДП]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
</feed>