Seminář 3 - Paralelní programování
Zdroje
- K dnešnímu semináři není dostupný obvyklý text umožňující přímočarou náhradu samostudiem.
- Concurrency
- Minimálně si přečtěte tyto sekce (včetně jejich podsekcí!):
- Processes and Threads
- Thread Objects
- Synchronization
- Executors
- Atomic Variables
- Minimálně si přečtěte tyto sekce (včetně jejich podsekcí!):
- Herbert Schildt, 2022
- Java, The complete Reference, Twelfth Edition
- Knihovna PřF: M2/1756
- Part I, Chapter 11 (pp. 247 - 276)
- Part II, Chapter 29 (pp. 955 - 1004)
- Zdrojové kódy z hodiny
Úkol č. 3
- Vyřešené úkoly zašlete do 13.3.2023 17:00 CET na email tomas.urbanec@upol.cz s předmětem: JJ2-3.
- Zasílejte pouze zdrojové kódy.
- Pokud chcete zdrojové kódy poslat zkomprimované, použijte buď formát zip nebo kombinaci tar+gz.
- Implementujte paralelní mergesort, kde počet použitých vláken bude dodán uživatelem. To, jakou techniku vláknování zvolíte, záleží na vás.
- Implementujte jednoduchý server, který mergesort z bodu 1 zpřístupní klientům a který bude schopný obsloužit více klientů najednou - protokol komunikace s klienty je popsán v dalším bodě.
- Implementujte klienta, který se serverem z bodu 2 bude komunikovat následujícím způsobem:
- Klient po připojení k serveru zadá, jak velké pole má být tříděno a počet vláken, které algoritmus dostane k dispozici. Tedy odešle zprávu ve
tvaru
x y
, kdex
ay
jsou přirozená čísla určující velikost pole a počet vláken. - Server po obdržení požadavku
x y
vytvoří náhodné poleint[] arr
velikostix
. - Server
arr
setřídí paralelním mergesortem z bodu 1 sy
vlákny a změří čas tříděnít
v milisekundách. - Server odpoví zprávou
t ms
. - Server čeká na další požadavek.
- Pro ukončení spojení může klient použít požadavek
quit
. - Pro zastavení serveru může klient použít požadavek
stopserver
. - Na libovolný jiný požadavek server reaguje zprávou
undefined
.
- Klient po připojení k serveru zadá, jak velké pole má být tříděno a počet vláken, které algoritmus dostane k dispozici. Tedy odešle zprávu ve
tvaru
Poznámky
- Při testování nebudou používány znaky nového řádku (
\r
a\n
) mimo konec zprávy.