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.

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