Delphi.cz

Český portál Delphi

Rozcestník: Jste tu poprvé? Pro začátečníky jsem napsal úvod do programování v Delphi. Můžete si přečíst informace ohledně změn v jednotlivých verzích Delphi a případně mezi jednotlivými edicemi Delphi. Pokud přecházíte ze starších verzí tak řetezce a unicode.
Možná Vás bude zajímat spolupráce databáze a Delphi, nebo se budete rozhodovat mezi různými druhy Delphi projektů.

Navštivte adresář nejpopulárnějších open source Delphi komponent

Platform status - podporované platformy v jednotlivých verzích

Free Delphi Starter Edition download

Potřebujete Delphi školení nebo konzultace na různá témata?

Případ TThreadPool a maximální počet vláken

Jen taková krátká poznámka ze života.

Dělal jsem úkol, kde se spouštělo velké množství tasků, které nezávisejí na pořadí. Prostě jak přijde nový požadavek, tak se převezme a podle případu se vygeneruje x výstupů. Krásná úloha pro TTask a TThreadPool. Fungovalo to nádherně, jen si zákazník přál, aby si mohl regulovat kolik dostane program vláken.

Více...

Datum: 2024-05-24 13:34:00 Tagy: vlakna, paralel, Threading

Delphi trik 3: ForceQueue

Už dříve jsem psal o TThread.Queue, ale možná jsem nezdůraznil, že v případě volání z hlavního vlákna je takový kód proveden okamžitě, tj. bez volání synchronize, což třeba nejen u Android aplikací může být požadováno.

Pro takový případ je k dispozici TThread.ForceQueue který zaručí, že i v případě volání z hlavního vlákna je takový kód prováděn se synchronizací.

Zkuste si novou aplikaci a na tlačítko Button1.OnClick dejte


procedure TForm6.Button1Click(Sender: TObject);
begin
  TThread.ForceQueue(nil,
     procedure
     begin
       Button1.Caption := 'hello'; // break point 1
       //Button1.Repaint;
     end
    );
end;// break point 2

A nyní program otestujte. Měl by se nejdříve zastavit na break point 2 a pak až na break point 1. Pokud ForceQueue nahradíte za Queue, tak se pořadí zastavení prohodí.

Více...

Datum: 2019-12-30 20:53:00 Tagy: paralel

trik

Použití TThread.Synchronize u ne GUI aplikací

V rámci prověřování jednoho nápadu jsem chtěl vyzkoušel jak se chová TThread.Queue a TThread.Synchronize (více o těchto volání z dřívějška) u ne GUI aplikací (resp. zkoušel jsem jen konzolové).

Více...

Datum: 2015-07-04 00:26:00 Tagy: paralel, RTL

Praxe

System.Net.httpclient - THTTPClient z XE8

No minule jsem byl k THTTPClient trošku nespravedlivý, ve skutečnosti toho umí více než se zdálo. Kromě https bez nutnosti dodání OpenSSL pro různé platformy to má zajímavé možnosti ohledně paralelního zpracování. Ukáži na malém příkladu.

Ukáži nejprve příklad na zamyšlení a pak vysvětlím co to vlastně dělá. Více...

Datum: 2015-04-19 22:59:00 Tagy: XE8, Indy, synapse, RTL, paralel

Novinky v Delphi

Aktualizace UI z threadu

Už dříve jsem psal o možnosti volání synchronize přes anonymní metodu z threadu (tj. synchronní možnost), ale teď Malcolm Groves v článku Updating the UI from a Task publikoval i asynchronní možnost takže má další pěkný příspěvek, který jsem sprostě okopíroval (zároveň i doplnění mé odpovědi Geby).

Více...

Datum: 2014-12-10 21:32:00 Tagy: Threading, paralel, XE7

Praxe

XE7 - IFuture druhé podání

Narazil jsem na pěkné vysvětlení IFuture s pěkným příkladem od Malcolma Grovese. Zásadní informace je, že IFuture není hodnota, kterou budete počítat v budoucnu, ale hodnota, kterou budete v budoucnu potřebovat. Tato jemná nuance je zásadní.

Krása použití paralelního programování v XE7 vynikne, až člověk změní myšlení. Přiznám se, že mi to trvá.

Více...

Datum: 2014-12-04 23:59:00 Tagy: XE7, paralel

Novinky v Delphi

XE7 - System.Threading - Future

XE7 přichází s novou jednotkou přímo v RTL a to System.Threading, která zjednodušuje paralelní programování. Jedná se o multiplatformní věc a mezi jinými umí ThreadPool, který podle zátěže přidává nebo odebírá další vlákna.

Více...

Datum: 2014-09-09 23:39:00 Tagy: XE7, RTL, Threading, paralel,

Novinky v Delphi