Rychlost kodu, multithreading – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Rychlost kodu, multithreading – Visual Basic – Fórum – Programujte.comRychlost kodu, multithreading – Visual Basic – Fórum – Programujte.com

 

Keny0
Návštěvník
16. 4. 2013   #1
-
0
-

Ahoj, mam pár otázeček.

1) Není  úplně k VB, ale v čem je výhoda multithreadingu? Pochopil jsem příklad, kdy se v jeden moment volá třeba 100 webových stránek ze kterých se načítají data, protože tady počítač většinu času čeká na načtení a tedy to současné načítaní proces výrazně urychlí.

Ale mě jde spíš o multithreading ve spojitosti s nenáviděnou funcí DoEvents, kterážto značně zpomaluje kód a i její umístění je tak nějak alchemie - tim myslim testy jestli ji dát každych 100 nebo 1000 nebo ... iterací. A pravě většina fór rešících pomalost DoEvents se točí okolo multithreadingu. Obecně tedy v čem je jeho výhoda, když i samotné jedno vlákno plně zaměstnává procesor? Taková moje představa je, že oproti DoEvents funkci se nepředá řízení jiné aplikaci, takže program nezamrzne a je tedy schopen reagovat na uživatelské vstupy... , ale rychlost zpracování se tim nezvýší?

2) Konkrétní případ z VBA grafické aplikace

Mam funkci, na kterou jsou přes winAPI funkci  SetWindowLong přesměrovány zprávy pro jedno z oken aplikace,

pokud je zpráva něco co hledam tak to zpracuju a jinak to předam zpět proceduře na kterou by se dostala pokud by to přesměrování nebylo. Zprávy se hromadí a každých 20ms je pomocí dalšího winAPI callbacku SetTimer volána funkce, která zachycené zprávy zpracuje (pokud nějaké jsou tak se něco překreslí) a tak to jede pořad dokola. Nicméně po každém překreslení je nutné volat DoEvents. No a u toho se muj 4jádrovej noťas hooodně zapotí... překreslovaní je plynulé, ale aplikace vytěžuje procesor na 30-50%, což je několikrát víc než jak ho vytíží to samé za použití přímo nějakého nástroje aplikace.

Otázka tedy zní jde to napsat obecně nějak šetrnějš, nebo je hlavní problém opravdu ve spoustě volání funkce DoEvents. A pomůže případné použití ve VBA celkem problematického multithreadingu?

3) Vytížení procesoru, příklad výše by vlastně vytěžovat procesor neměl, jde jen o cyklus čekání a následné nepříš výpočetně složité reakce, ikdyž celkem ve velké frekvenci 20ms pro aspoň 50 překreslní za sekudu (možná to je ten problém). Ale jde mě o případy, kdy se něco od někud načte nebo nějak jinak zadá a teď si počitej plecháči, když tak kouknu na vytížení procesoru/ů tak jsem snad neviděl, aby šlo nad 50%, je nějaká cesta, jak psát kód, aby bylo vytížení co nejvyšší?

Nahlásit jako SPAM
IP: 88.100.129.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

Podobná vlákna

Multithreading — založil Filip0913

Multithreading — založil michal

PASCAL multithreading — založil josef12345

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý