Cookie Consent by Free Privacy Policy website
Navigační lišta REGISTRACENavigační lišta TABLONavigační lišta STATISTIKANavigační lišta SOUTĚŽENavigační lišta POMOZTENavigační lišta REKLAMANavigační lišta KONTAKTNavigační lišta
Navigační lišta
Horní lišta bez menu
Logo Zpovědnice
Online zpověď Návštěvní kniha Nová zpověď Časté dotazy
Dolní lišta Dolní lišta Dolní lišta
Nabídka voleb Dolní lišta voleb
Diskuze č.1186885, vloženo 23.01.2022 00:46:35 Starší zpověďNovější zpověďHlavní stránka
Prosím o pomoc - c#
Ahoj,

trochu sa hanbím že sa takto natvrdo pýtam, mám vyriešiť úlohu, prešiel som už 2 kurzy a stále som riešenie nenašiel.

Prvá úloha je prepísať nasledojúci algoritmus na asynchrónne programovanie. DoSomeWorkOverNet sa musí spúšťať paralerne:

https://codeshare.io/eV8MZ x

Toto je moje riešenie, nefunguje...

https://codeshare.io/4ep 4Vb

potešilo by ma, keby mi ho niekto opravil a vysvetlil, prečo som hlúpi a nepochil som tak základnej myšlienke...

Mám tu ešte jednu úlohu, ktorú som neriešil pretože som bol zaneprázdnený plakaním nad tou prvou... Úloha je, opraviť kód, nerobí čo má. Rovako ako v 1. prípade má bežať asynchrónne. Študujem ćo presne je CancelationToken a aký má vzťah k problemu... neviem..

https://codeshare.io/AdEJgw
 Pythonista Muž99  VYMAZAT

Zaslaná rozhřešení Starší zpověďNovější zpověďHlavní stránka
Chceš dnes udělat dobrý skutek ? Pomoz výše uvedenému hříšníkovi tím, že mu dáš nějaké rozhřešení! Můžeš mu ho poslat na e-mailovou adresu, kterou uvedl u zpovědi, nebo napsat veřejně vyplněním formuláře na konci této stránky. A jestliže nechceš, aby pod tvou přezdívkou mohl vystupovat ještě někdo jiný, zaregistruj si ji ZDE !
 
23.01.2022 21:17:15
Michal-222:
Tak to si myslíš špatně. Ta asynchronní varianta rozhodně nevytvoří 1000 zbytečných vláken. Ta používá ve výchozím stavu ThreadPool, který spravuje pár vláken a plánuje na nich kód efektivně a inteligentně.

"jinak všechna ta vlákna stejně spí a čekají, až přijde nějaký paket zvenku"
Vidíš, sám sis odpověděl, proč jsou ta vlákna úplně k ničemu :)
 dotnet Muž23 Kategorie
23.01.2022 21:09:34
Roju:
Já se zase teprve teď dozvěděl, že se to (nejspíš) dá udělat jen tak, jedním či dvěma klíčovými slovy. Budu to muset vyzkoušet.
 Michal-222 Muž44 Kategorie
23.01.2022 21:04:10
Je fakt, že C# moc neznám. Nicméně něco málo s vlákny jsem programoval v C++, tak jsem našel jak se to dělá v tom C#. Je možné, že je lepší to udělat s využitím třídy Task.
 Roju
23.01.2022 20:50:54
Ale pravda je, že všechny běžné IO operace už jsou asynchronně udělané, takže je stačí spustit (v tom asynchronním režimu) a počkat až budou ukončené, a žádná nová vlákna se nemusí zakládat.
 Michal-222 Muž44 Kategorie
23.01.2022 20:46:39
dotnet:
Já si teda myslím, že je to úplně to samé, akorát jedno z toho je napsané přímo pomocí syntaxe jazyka C# a druhé pomocí knihovních funkcí, ale po spuštění to pak běží úplně stejně.

Nakolik jsou I/O funkce mrhání nedokážu posoudit, ale pokud to bude IO z něčeho, co chodí jednou za uherský rok, (jako třeba nějaké pomalé TCPIP připojení) tak by to mohlo být právě výhodné, a k přepínání právě dochází jen ve chvíli, kdy je nějaká IO operace fyzicky dokončena, jinak všechna ta vlákna stejně spí a čekají, až přijde nějaký paket zvenku.
 Michal-222 Muž44 Kategorie
23.01.2022 20:35:20
Jenom upozorním, že co tu píše Roju je volovina a nedělej to tak, protože to jednak není to, co se po tobě chce (asynchronní programování) a druhak si tím vůbec nepomůžeš, akorát vytížíš systémové zdroje, protože založit a následně přepínat mezi tisíci vlákny jsou pěkně drahé operace. Navíc ty neděláš CPU heavy práci ale I/O, takže tím je to vlastně ještě zbytečnější. Zakládat vlákna pro I/O operace je naprosté mrhání systémovými zdroji a úplná zbytečnost!
 dotnet Muž23 Kategorie
23.01.2022 19:45:22
Ďakujem všetkým moc za radu!!! <3
Smajlík  Pythonista
23.01.2022 18:18:40
Samotááářka:
A nechceš se nejdřív naučit nějaký programovací jazyk? Jako třeba python nebo C#?

Tohle musí být takové dost abstraktní, protože nějaký ty základy programování tam stejně potřebuješ, a programování webů má oproti tomu normálnímu jednu značnou komplikaci ... že nemáš nic jako výsledný program. Všechen kód stahuješ z nějakého vzdáleného počítače a vykonáváš na tom místním, a tomu je to celé poplatné. A ještě jsou tam další specifické věci...

Podle mě by bylo lepší se naučit základy programování na něčem "normálním". Pokud to myslíš vážně, stejně se tomu nevyhneš.

Při "normálním" programování SQL nepotřebuješ, aspoň né hned od začátku. Můžeš si to ukládat do vlastních proměnných a souborů.

Ono je taky dobré se naučit jednu věc pořádně (aby tomu člověk opravdu rozuměl) a pak se pouštět do další. Jinak v tom má člověk asi docela guláš.

Já když jsem potřeboval něco z SQL, učil jsem se to myslím tady (a zdarma):
https://www.w3schools.com/sql/sql_select.asp
Předpokládá to ovšem, že alespoň zhruba chápeš, k čemu ten jazyk je.
 Michal-222 Muž44 Kategorie
23.01.2022 17:43:07
Oprava: "na zaplacení kurzovného" - trochu se mi do té myšlenky připletla jiná a to na zaplacení účtu za mobil.
 Samotááářka Žena37 Kategorie
23.01.2022 17:41:57
Michal-222: Já se trochu sekla u MySQL, protože byl horší měsíc a nevyšlo mi tak nějak na zaplatí kurzovného. Ale mám za sebou html, css, scss, javascript, jquery, a kus php, který se tedy učí dohromady s MySQL.
 Samotááářka Žena37 Kategorie
23.01.2022 17:19:26
Místo přímého volání funkce DoSomeWorkOverNet(i) vytvoříš pro každou funkci vlákno, ve kterém se bude vykonávat. V terminálu uidíš, že to celé proběhne mnohem rychleji než původní verze ( funkce DoSomeWorkOverNet() běží paralelně) a čísla nejdou pěkně za sebou jak u původní verze ( ale podle toho jak dobíhají jednotlivá vlákna. )


for ( int i = 0; i < 1_000; i++ )
{

// DoSomeWorkOverNet(i);

Thread myNewThread = new Thread( () => DoSomeWorkOverNet(i) );
myNewThread.Start();

}

Tak snad to ještě není s křížkem po funusu.
 Roju
23.01.2022 11:57:03
Samotááářka:
A co se vlastně učíš za jazyk?
 Michal-222 Muž44 Kategorie
23.01.2022 09:52:10
To ti paralelně nepoběží, protože klíčovým slovem await vždycky čekáš na dokončení předchozího. Pokud chceš aby to běželo "zaráz", musíš to provolat bez await, ty Tasky si uložit do nějaké kolekce a následně zavolat await Task.WhenAll(kolekce), čímž počkáš, až se vše dokončí.
 dotnet Muž23 Kategorie
23.01.2022 08:53:17
Na internetu nebo facebooku po zadání hesla_"jak programovat v..."
 su23
23.01.2022 07:29:17
Zkus tohle spíš položit tady: https://www.facebook.com/groups/630529037092818

A kdybys znal někoho, kdo by se se mnou chtěl pustit do většího projektu na systémové úrovni a nebo bys měl zájem sám, byla bych velmi ráda, kdybys mi dal vědět. Velmi zoufale totiž někoho takového hledám. Ať se budu učit sebelépe, tak to prostě sama evidentně nezvládnu.
 Samotááářka Žena37 Kategorie



Přidání rozhřešení Starší zpověďNovější zpověďHlavní stránka
TVÁ PŘEZDÍVKA:

OPIŠ BEZPEČNOSTNÍ KOD:
Captcha

Tento inzerat koupíte on-line od 100 Kč.
Přidej inzerát on-line od 100 Kč
TEXT ROZHŘEŠENÍ:

PŘILOŽ SMAILÍKA:
Smail Palec nahoru Smail Hrozící Smail Drží palec Smail Není to důležité Smail Dostaneš do huby Smail Smutný Smail Cože?? Smail Safra Smail Pusinka
jupííí tak bacha držím palec to je fuk tumáááš ach jo no nééé ?! safra mmmuc
(žádný )


Změňte svoje cookies preference

Nejlepší chorálová skupina světa... GREGORIAN 2020 ...20th ANNIVERSARY WORLD TOUR.

REKLAMA
Copyright 2003 www.zpovednice.cz + www.spovednica.sk