PV178 - HOMEWORK #5 EFEKTÍVNA VÝROBA ÁUT Nasledujúci program zostrojí auto (zdrojové kódy tried sú súčasťou zadania a nemôžte ich nijak meniť): Car car = new Car(NUMTIRES); car.Chassis = new Chassis(); car.Engine = new Engine(); for (int i = 0; i < NUMTIRES; i++) { car.AddTire(i, new Tire()); } car.TopCover = new TopCover(); car.Painting = new Painting(); Každé nastavenie property alebo volanie metódy AddTire trvá nejakú dobu (simulované pomocou Thread.Sleep). OBMEDZENIA Z kódu nie je poznať že auto sa musí zostrojiť s ohľadom na nasledovné podmienky: · Engine sa dá namontovať až potom čo je chassis na mieste. · Tires sa dajú namontovať tiež až potom ako je chassis nastavený. · TopCover môžeme nasadiť až potom ako je namontovaný motor a kolesá. · Auto sa dá namaľovať až potom čo je zvyšok auta zostrojený. Zo zdrojového kodu dostupných tried vieme že: · Vytvorenie triedy Engine trvá 1 000 ms (musíme správne zostaviť samotný motor). · Namontovanie Chassis trvá 1 200 ms. · Namontovanie Engine trvá 800 ms. · Nasadenie jednej Tire trvá 500 ms. · Namontovanie TopCover zaberie 600 ms. · Nastriekanie farby nakoniec trvá 400 ms. Ľahko si teda môžeme spočítať že zostavenie auta (4 kolesá) programom trvá 6 000 ms. (Môžete si to stopnúť triedou System.Diagnostics.Stopwatch). Okrem toho každá operácia zostrojenia auta má šancu že sa nepodarí pretože súčiastka je proste vadná (5%). Tým pádom sa vyhodí výnimka CarAssemblyException a celé rozostavané auto je súce na vyhodenie. Akékoľvek nepodobnosti so skutočným procesom výroby auta sú určite zámerné J. ZADANIE Pomocou Parallel metód, Cancellation Pattern, a Taskov za využitia parent-child a continuation vzťahu, naimplementuje zostrojenie auta čo najrýchlešie. Implementácia bude v konzolovej aplikácii a bude mať nasledovné špecifiká: · Ak nastane výnimka, samozrejme sa žiadna nezačatá práca už viac nepokúsi vykonať. Každá výnimka bude vypísaná na konzolu. · Ak užívatel stlačí Enter, dá signál na zrušenia výroby (Cancel) a každá dovtedy nezačatá práca na zostrojení auta sa už nevykoná. Konzola oznámi zrušenia výroby auta. · Kolesá (Tire) sa nedajú namontovávať viac ako 2 súčastne (inak vybuchne internet). HINT: trieda ParallelOptions Keď si spočítame koľko by trvala paralelizovaná výroba auta, ľahko zistíme že 4-kolesové auto vieme zostrojiť za 3 200 ms. ŠTÚDIUM K nakopnutiu ako túto úlohu správne vyriešiť Vám určite výdatne pomôže nasledujúci dokument: Parent-Child Task Relationships in the .NET Framework 4