Komentáře k článku

Úvod do Reactive Extensions

Asynchrónne programovanie sa v súčasnosti dostáva stále viac do pozornosti, pomaly sa stáva nutnosťou a budeme sa s ním stretávať stále častejšie. Napríklad vo Windows Phone 7 je dobrým zvykom vykonávať náročné operácie asynchrónne v osobitnom vlákne, aby UI aj naďalej reagovalo na vstup používateľa, vo Windows 8 je dokonca nutné všetky operácie, ktoré môžu trvať dlhšie ako 50 milisekúnd, vykonávať asynchrónne.

Zpět na článek

15 komentářů k článku Úvod do Reactive Extensions:

  1. blizz

    Re: Úvod do Reactive Extensions

    Aha takze aky rozdiel je medzi tymto

    var nums = Enumerable.Range(0, 10);
    nums.Where(number => number % 2 == 0).ToList().Fo­rEach(x => Console.Write­Line(x));

    a tymto:

    var numbers = Observable.Range(0, 10);
    numbers.Where(num­ber => number % 2 == 0).Subscribe(x => Console.Write­Line(x));

    v prvom pripade sa najprv vyberu vsetky data z kolekcie a odfiltruju a potom prejdu a vypisu, v druhom pripade sa vysledky vramci filtrovania vypisuju priebezne?

    1. Aleš Roubíček

      Re: Úvod do Reactive Extensions

      Rozdíl ani tak není ve filtrování – v obou případech probíhá lazy, ale v tom, že druhý běží asynchroně a je nonblocking.

      1. blizz

        Re: Úvod do Reactive Extensions

        Takze zjednodusene povedane v druhom pripade zakladne vlakno aplikacie, prejde na dalsi riadok, zatial co hodnoty sa vypisuju na inom vlakne az vo chvili ked ich mame k dispozicii?

    2. Friv

      Re: Úvod do Reactive Extensions

      Pre klasické aplikácie to samozrejme neplatí.

      xxx

      4. 7. 2012 7:49 redakčně upravil Martin Hassman, důvod: Link spam.
  2. Rene Stein

    Pár poznámek k RX

    Díky za osvětový článek v češtině o RX!

    Jen pár poznámek.

    Cituji:
    „Pri asynchrónnom programovaní táto podmienka sekvenčnosti vykonávania príkazov neplatí. *Ak je metóda A asynchrónna, jej zavolaním sa rozbehne nové vlákno (proces)*, ktoré je zodpovedné za jej vykonanie a tok programu pokračuje vykonávaním metódy B.“

    Jsem zvědav, kdy nad tímhle někdo vypění.:) Asynchronní != (nutně) paralelní.

    Mohl bych poprosit, co znamená, nebo co si představujete pod tím, že „Observables sú tzv. first class citizens“?

    Tento termín se ve Vámi uváděném kontextu většinou používá u delegátů (a higher order functions, což jsou mj. skoro všechny operátory v RX)

    Observables jsou prostě objekty podporující rozhraní IObservable – a rozhraní je samozřejmě „first class citizen“, ale proč to zdůrazňovat.

    Kdyby někoho zajámalo, jak se dá třeba RX použít k lepší práci s nešikovným EAP (Event-based Asynchronous Pattern) vzorem v .Net, kdy asynchronní kód lze psát skoro stejně jako kód synchrnonní i bez klíčového slova await v C# 5,tak ho odkážu (self promo, omlouvám se) na svůj článek (z roku 2010)
    http://jdem.cz/q32u4

  3. backup

    windows 8 , 50 milisekund

    ….Windows 8 je dokonca nutné všetky operácie, ktoré môžu trvať dlhšie ako 50 milisekúnd, vykonávať asynchrónne. …

    ja jsem vzal program, je prelozeny na win2000 a spustil jsem ho pod w8 a fungovalo to. Znamena to, ze se nahodou nikde nenasla nejaka operace delsi nez 50 milisekund nebo nema autor pravdu.

    Co je to operace?

    1. Martin Hassman

      Re: windows 8 , 50 milisekund

      Tak o tom limitu 50 ms se poměrně dost píše, čirý výmysl to asi nebude 8-) Otázka je, co se přesně stane, podle http://www.mindscapehq.com/blog/index.php/2012/03/13/asynchronous-programming-in-c-5/ po 50 ms OS nebude čekat na návratovou hodnotu akce/operace/u­dálosti/api volání a poběží dál.

      Jsem zvědav, jak přísně to bude řešené a zda se z důvodu zpětné kompatibility stejně nezavedou nějaké výjimky.

    2. Rene Stein

      Re: windows 8 , 50 milisekund

      To, co jste citoval, platí pro *návrh* API Windows RT aplikací.

      Jestliže operace může trvat déle než 50 ms, má být pro ni vystaveno asynchronní API.

      Tedy:

      1) Vy jsem měl aplikaci, která je součástí tzv. klasického desktopu – nešlo o Windows RT aplikaci.

      2) 50 ms na operaci je doporučení/po­žadavek/design guideline/ na autory metod ve Windows RT aplikacích. Neznamená to, že nějaká starší WIN32 API v klasickém desktopu nebo nové metody ve Windows RT budou zázračně a a samy od sebe najednou asynchronní (ani nebudou „jen tak“ zázrakem paralelizovány).

        1. Martin Hassman

          Re: windows 8 , 50 milisekund

          Ne, ve vydávacím procesu oponentury nemáme a nevím o žádném e-magazínu z oblasti programování (a vlastně IT obecně), který by něco takového v ČR dělal. (Pokud někdo o takovém víte, rychle sem s ním!) U média s kadencí textů podobnou Zdrojáku to považuji v ČR za nemožné (za současné ekonomické situace, jaká v médiích panuje).

          Zdroják není „odborný recenzovaný časopis“, kde je něco takového zvykem, resp. požadavkem. Autor za svůj text zodpovídá, redakce pak zodpovídá za výběr autora, snaží se ho prověřit, a když jsme na pochybách (a to občas jsme), tak se pokusíme oponenturu zajistit, je-li tedy na dané téma od koho. Tím dosáhneme nějaké úrovně minimalizace problémů, kterou jsme ještě schopní realizovat. Nemyslím, že by to šlo dělat nějak výrazně lépe, ale pokud o nějakém funkčním a ověřeném modelu někdo víte, rád se nechám inspirovat.

          A pokud jsem v té otázce vycítil správně, že byste měl zájem občas nějaké Windows/.NET texty oponovat, tak s tím rozhodně nemám problém, naopak, jen nemůžu nabídnout žádný honorář.

          1. Rene Stein

            Re: windows 8 , 50 milisekund

            ;) Tomu říkám pohotový přístup.:)

            Ne, na oponenturu jsem se nenabízel, ani zadarmo, ani za peníze, jestliže to v příspěvku i nepřímo bylo, onmlouvám se za ty iluze. :)

            Spíš mě v tom příspěvku na G+ zajímalo, jestli se něco takového dělí, protože chápu, že šéfredaktor nemůže znát vše, ale za vše musí zodpovídat.
            Ty ekonomické důvody samozřejmě chápu.

            1. Rene Stein

              Re: windows 8 , 50 milisekund

              „Spíš mě v tom příspěvku na G+ zajímalo, jestli se něco takového dělá“.

              Omlouvám se i za další překlepy, psáno na mobilu.

            2. Martin Hassman

              Re: windows 8 , 50 milisekund

              V naprosté většině případů rozumí autor textu mnohem líp než šéfredaktor (kdyby to bylo naopak, psal bych si ty texty radši sám 8-).

              Ta odpovědnost je sdílená. Autor je primárně zodpovědný za odbornou stránku textu (je to větší odborník), šéfredaktor za výběr témat, editor potom (v našem případě je šéfredaktor a editor tatáž osoba) za srozumitelnost a čtivost textu (většinou je totiž větším odborníkem na psaní než autor). Spojení autora + šéfredaktora by mělo mít synergický efekt (jinak by to nefungovalo a můžeme to zavřít).

              To ale neznamená, že tam vůbec žádný odborný filtr není. Je. A dokonce velmi levný. Objeví se totiž autoři, kteří se neosvědčí, a k peru je dále nepustíme nebo se objeví takoví, na které je třeba zvýšený dohled, případně takoví, kteří si nějakou formu zpětné kontroly (neříkám rovnou oponentury) zajistí před zasláním sami, protože se třeba jejich jméno stává dobrou „značkou“, na které si musí nechat záležet.

              Většina problémů se tímhle způsobem vyřeší a srovná, jen se to děje metodou crowdsourcingu, tj. po publikaci za využití „levné síly“ čtenářů (viz ostatně tohle vlákno), nikoliv nějakým placeným týmem expertů na straně redakce. Nejedná o nějaké bizarní znásilňování čtenářů, ona řada z nich na sebe tuhle roli bere velmi ráda, ale to už bychom se přesunuli spíš do oblasti psychologie.

              Chtěl jsem jen ukázat, že ten stávající mechanismus není bezchybný, ale je docela dobře funkční. O síle onoho „docela dobře“ bychom jistě mohli dlouho diskutovat.

    3. igorkulman

      Re: windows 8 , 50 milisekund

      Uviedol som to nepresne, sú tým myslené Metro aplikácie. Pre klasické aplikácie to samozrejme neplatí.

    4. msx

      Re: windows 8 , 50 milisekund

      V Androide to, napríklad, funguje tak, že pokiaľ nejaká činnosť trvá viac ako 2 sekundy, tak systém automaticky otvorí okno s možnosťou zatvoriť aplikáciu, ktorá neodpovedá. Toto isté môže byť aj vo Windows 8.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3649