Náhodné výkřiky 5

vložil Radek Červinka 13. června 2011 23:24

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).

Delphi Preview Handle

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.


Nabízíme Delphi školení na různá témata, primárně ve Vaší firmě.

Tagy: ,

Nástroje | Novinky

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS