Opět několik navzájem nesouvisejících věcí: dnes náhled zdrojových kódů v průzkumníku pro Windows 7 a Vista, něco o TRTLCriticalSection a spol. a na závěr několik odkazů.
Delphi Preview Handler
Celkem šikovné rozšíření shellu (průzkumníka) pro náhled zdrojových kódů nejen v Delphi nedávno publikoval na svém blogu Rodrigo. Mimochodem jeho blog je velmi zajímavé čtení. Rozšíření je psané v Delphi XE. Funguje i v 64bit Windows 7 (resp. u mne aspoň ano).
http://msdn.microsoft.com/en-us/library/ms686197%28VS.85%29.aspx
TRTLCriticalSection
Nedávno v jedné konferenci jsem byl (no ne já - ale obecně) upozorněn na TRTLCriticalSection. Asi to znáte, ale pro mne to je novinka, neb většinou používám TCriticalSection. Uvedená datová struktura je určena pro API Windows pro zamykání a je používána i uvedeným zapouzdřením TCriticalSection.
Ve většině případů toto zapouzdření stačí, ba dokonce je multiplatformní atd., ale jednu věc postrádá. Pokud totiž použijete přímo TRTLCriticalSection, můžete specifikovat SpinCount, což je počet pokusů o vchod do kritické sekce než je vlákno odloženo. V normálním případě se jedná o 1 pokus a následuje odložení (které je časově náročné). Pokud máte mnoho soutěžících vláken, je vhodné použít uvedenou strukturu a nastavit jí spincount > 1, mělo by to zrychlit akci.
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows;
var
cr: TRTLCriticalSection;
begin
InitializeCriticalSection(cr);// nebo InitializeCriticalSectionAndSpinCount(cr, 2000);
// SetCriticalSectionSpinCount(cr, 2000);
EnterCriticalSection(cr);
EnterCriticalSection(cr);
if TryEnterCriticalSection(cr) then
LeaveCriticalSection(cr);
DeleteCriticalSection(cr);
end.
Mimochodem otázka za malé plus: proč nedojde k zablokování programu po dvou EnterCriticalSection(cr)? Protože kritická sekce v rámci jednoho vlákna není blokující (což bylo pro mne kdysi velké překvapení, ale je to logické a zabraňující deadlocku). Jinak SetCriticalSectionSpinCount na MSDN.
Něco linků na závěr
Málo známá vlastnost novějších Delphi je Pointer Math (pravděpodobně od 2009 v souvislosti s unicode), Delphi F12 Debug Hotkey support pro Windows Vista a 7.
A na konec to jsem zvědav co to bude: delphiforandroid.com - ale lidé co za tím stojí jsou velmi schopní, kromě uvedené osoby se jedná hlavně o Simon J. Stuart, který zdaleka jen není autorem loga (tedy aspoň podle twitteru). Úvodní verze byla trapná, ale od té doby se začínají prosakovat různé náznaky, tak uvidíme.