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?
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.
Datum: 2024-05-24 13:34:00 Tagy: vlakna, paralel, Threading
Vždycky jsem UDP psal pomocí Synapse, ale chtěl jsem zkusit něco nového a chtěl jsem to pro Android za pomoci inhouse řešení - i když je Synapse pro Android je dostupná.
Server byl existující synapse UDP server (tady je sample public:howto:udpserver) pro windows, který na zaslaný řetezec <ident> vrátil název počítače, takže jsem během chvilky dostal seznam dostupných stanic i s IP adresou pro připojení z Androidího klienta.
FastMM4 je geniální. V podstatě ve většině instancí je nepřekonatelný - a že se o to stále někdo pokouší. Ale v případech brutálních vícevláknových (hodně vláken), paměťově intenzivních programů je možné, že FastMM přestane dobře škálovat díky tomu, že své interní struktury chrání spinlocky.
Datum: 2015-09-05 00:27:00 Tagy: FastMM, optimalizace, Threading
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 pokračování minulého článku ukáži pravděpodobně nejčastější použití System.Threading - použití TTask, přidání úlohy do poolu. Příklad jsem si vypůjčil z blogu Embarcadera.
implementation
uses
System.Threading, System.SyncObjs;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
tasks: array of ITask;
value: Integer;
begin
Setlength (tasks, 2);
value := 0;
tasks[0] := TTask.Create (procedure ()
begin
sleep (3000); // 3 seconds
TInterlocked.Add (value, 3000);
end);
tasks[0].Start;
tasks[1] := TTask.Create (procedure ()
begin
sleep (5000); // 5 seconds
TInterlocked.Add (value, 5000);
end);
tasks[1].Start;
TTask.WaitForAll(tasks);
// TTask.WaitForAny(tasks);
ShowMessage ('All done: ' + value.ToString);
end;
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.
Datum: 2014-09-09 23:39:00 Tagy: XE7, RTL, Threading, paralel,