Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: thread 23. 06. 2017, 08:43:16

Název: Multithreading projekt/příklad
Přispěvatel: thread 23. 06. 2017, 08:43:16
Vedel by niekto dat navrh na projekt popr. priklad, na ktorom by sa dalo vyskusat/precvicit viacvlaknove programovanie? Robil by som to v jazyku C#.
Dakujem za napady
Název: Re:Multithreading projekt/priklad
Přispěvatel: asdfqwer 23. 06. 2017, 09:03:15
Napsat si TCP/IP server a klienta k tomu. Server multi, aby najednou zvladl vice klientu.
Název: Re:Multithreading projekt/příklad
Přispěvatel: thread 23. 06. 2017, 09:31:11
ok, dakujem za tip, tiez som nad tym uvazoval, ale to mi pride celkom na dlhsie.
Název: Re:Multithreading projekt/příklad
Přispěvatel: Kate 23. 06. 2017, 09:38:29
ok, dakujem za tip, tiez som nad tym uvazoval, ale to mi pride celkom na dlhsie.
Na dlhsie? Nepsal že máš napsat celý funkční webserver, ale nějaký blíže neurčený TCP/IP server. Prostě si třeba na zkoušku napiš něco co posloucha na nějakém portu a všem připojeným klientům posílá zpátky počet aktuálně připojených kdykoliv se připojí / odpojí nějaký další klient. Nebo jim každou vteřinu pošle aktuální čas.Taková věc je na pár řádků.
Název: Re:Multithreading projekt/příklad
Přispěvatel: mon 23. 06. 2017, 10:38:35
zosortuj niekolko 10m riadkov s definovanym poctom threadov
Název: Re:Multithreading projekt/příklad
Přispěvatel: tada 23. 06. 2017, 18:10:26
ok, dakujem za tip, tiez som nad tym uvazoval, ale to mi pride celkom na dlhsie.

To napises hned, pak sem muzes postnout vysledek.

Znas metody jako jsou Producent/konzument, atd?
Název: Re:Multithreading projekt/příklad
Přispěvatel: thread 23. 06. 2017, 19:08:22
Ano poznam tie metody
Název: Re:Multithreading projekt/příklad
Přispěvatel: Jenda 23. 06. 2017, 20:30:09
Vedel by niekto dat navrh na projekt popr. priklad, na ktorom by sa dalo vyskusat/precvicit viacvlaknove programovanie? Robil by som to v jazyku C#.
Dakujem za napady

http://www.ksi.mff.cuni.cz/lectures/NPRG042/html/index.html#@tab_assignments

TL;DR:
Název: Re:Multithreading projekt/příklad
Přispěvatel: thread 23. 06. 2017, 22:02:11
na niektore z tych uloh je potrebna asi aj ina znalost, ako len paralelne programovanie.
Název: Re:Multithreading projekt/příklad
Přispěvatel: Michal Kovačič 24. 06. 2017, 11:03:30
Hmmm...
Nejspíše ano - a v čem to vadí?

na niektore z tych uloh je potrebna asi aj ina znalost, ako len paralelne programovanie.
Název: Re:Multithreading projekt/příklad
Přispěvatel: Martin Dráb 24. 06. 2017, 12:06:28
Citace
na niektore z tych uloh je potrebna asi aj ina znalost, ako len paralelne programovanie.

Krom znalosti algoritmů (abyste je mohl paralelizovat) moc víc znát nepotřebujete, pokud se nesnažíte o opravdu vysoký výkon (v takovém případě se hodí např. znalost vektorových instrukcí).

Samozřejmě, nepočítejte moc s tím, že pokud algoritmus pustíte v N vláknech, dosáhnete N-krát rychlejšího výpočtu, ale na procvičení se tyhle úlohy určitě použít dají (a na MFF se i pro tyto účely používají).
Název: Re:Multithreading projekt/příklad
Přispěvatel: zboj 24. 06. 2017, 14:28:28
na niektore z tych uloh je potrebna asi aj ina znalost, ako len paralelne programovanie.
Ten TCP server je dobrý nápad, základ je na pár řádků a pak se dá použít více vláken, GCD nebo třeba kooperativní multitasking (to je obzvlášť poučné).
Název: Re:Multithreading projekt/příklad
Přispěvatel: klokan 26. 06. 2017, 06:55:32
Zkus paralelně generovat Mandelbrotovu množinu.
Název: Re:Multithreading projekt/příklad
Přispěvatel: AgentK 26. 06. 2017, 09:20:38
Taky bych podpořil TCP server. Tam jde aplikovat hned několik přístupů.
Thread/klient je overkill a pro reálné využití to není, listener a pool workerů je asi lepší, můžete tam dělat nějaký loadbalancing.
V rámci studia přistupujte na sdílené prostředky, určitě si zkuste i něco v shm.

Jako další challenge bych doporučil non-blocking IO a/nebo podporu TLS. Obzvláště to druhé je dobré si zažít - lekce správného monitorování událostí na soketu. Ačkoliv C# neznám, předpokládám, že to bude podobně "zajímavé"  jako v C/C++.


-K-
Název: Re:Multithreading projekt/příklad
Přispěvatel: mon 27. 06. 2017, 20:52:39
este celkom zalezi ci  sa chces naucit viac multithreadove programovenie samotne alebo dake nadstavby v C#.
teda ci si sam budes riadit thready, pouzivat len zaklady ako mutexy, semafory, fence, atomicke operacie atd. alebo sa chces naucit dake c# nadstavby ako TPL alebo PLINQ
Název: Re:Multithreading projekt/příklad
Přispěvatel: thread 27. 06. 2017, 21:07:03
Tak ponovom sa odporuca pouzivat TPL a Tasky. V podstate aj ked spravite Task.Run(() => {}), tak sa vytvori novy thread.
Název: Re:Multithreading projekt/příklad
Přispěvatel: thread 27. 06. 2017, 21:07:51
Zkus paralelně generovat Mandelbrotovu množinu.
tak to ani neviem co je :/
Název: Re:Multithreading projekt/příklad
Přispěvatel: G 11. 08. 2017, 18:04:51
V podstate aj ked spravite Task.Run(() => {}), tak sa vytvori novy thread.

Not true ;D vytvoří se nový task což nikoliv nutně znamená vytvoření threadu
Název: Re:Multithreading projekt/příklad
Přispěvatel: Milfaus 11. 08. 2017, 20:38:15
Co jde použít Parallel.Invoke už to není co dřív :-D  ;D

Parallel.Invoke(
    () => {
        Console.WriteLine("Bobek 1 Tlacim");
        Thread.Sleep(5000);
        Console.WriteLine("Bobek 1 Uuuuleva");
    },
    () => {
        Console.WriteLine("Bobek 2 Tlacim");
        Thread.Sleep(3000);
        Console.WriteLine("Bobek 2 Je venku");
    },
    () => {
        Console.WriteLine("Bobik 3 Tlacim");
        Thread.Sleep(1000);
        Console.WriteLine("Bobik 3 Zblunk");
    });

App, nic nižšího než C# 5 nebo 6 nemá smysl řešit.
Název: Re:Multithreading projekt/příklad
Přispěvatel: Tuxik 12. 08. 2017, 05:58:09
Zkus paralelně generovat Mandelbrotovu množinu.
tak to ani neviem co je :/
https://cs.wikipedia.org/wiki/Mandelbrotova_mno%C5%BEina
pro paralelizaci velmi dobrý kandidát, můžeš si hrát s barvičkama, prozkoumat údolí mořských koníků, najdeš zde geometrické i "přírodní" onrazce... je to k ničemu, ale přitom krásný a fascinující.
Název: Re:Multithreading projekt/příklad
Přispěvatel: Ju 12. 08. 2017, 21:59:12
https://m.youtube.com/watch?v=0jGaio87u3A
Název: Re:Multithreading projekt/příklad
Přispěvatel: ByCzech 13. 08. 2017, 18:14:30
Zkus paralelně generovat Mandelbrotovu množinu.
tak to ani neviem co je :/

Fraktál.

Vidět se to dá třeba v aplikaci Fraqtive (http://fraqtive.mimec.org/)
Název: Re:Multithreading projekt/příklad
Přispěvatel: F# 14. 08. 2017, 19:02:17
Kazda trosku zlozitejsia GUI aplikacia potrebuje vlakna.

Napriklad take kopirovanie suborov. Jedno vlakno kopiruje subory a druhe vlakno zobrazuje stav kopirovania...

Na to aby druhe vlakno vedelo zobrazit tento stav musi priebezne cakat na prve vlakno inak ti to hodi errory, pouziva sa k tomu dispatcher.

Ak sa ale chces vyhnut synchronizacii vlakien a lockovaniu je dobre pouzivat actor model.