您的位置:首页 > 其它

看到老外一个有意思的类,发现自己无知了 ...

2011-01-20 21:11 267 查看
废话不说,直接贴代码:

unitNewWindows;interface usesWindows; {$HINTSOFF} type TNewCriticalSection=object private FOldCriticalSection:TRTLCriticalSection; public procedureInitialize;stdcall; procedureDelete;stdcall; procedureEnter;stdcall; procedureLeave;stdcall; end; {$HINTSON} implementation procedureTNewCriticalSection.Initialize; externalkernel32name'InitializeCriticalSection'; procedureTNewCriticalSection.Delete; externalkernel32name'DeleteCriticalSection'; procedureTNewCriticalSection.Enter; externalkernel32name'EnterCriticalSection'; procedureTNewCriticalSection.Leave; externalkernel32name'LeaveCriticalSection'; end.

基于object的老式对象实现,确实值得品味,这是使用范例:

procedureTest; var NewCS:TNewCriticalSection; begin NewCS.Initialize; try NewCS.Enter; try //somecode finally NewCS.Leave; end; finally NewCS.Delete; end; end; 相比传统的op的代码:procedureTest;
var
CS:TCriticalSection;
begin
InitializeCriticalSection(CS);
try
EnterCriticalSection(CS);
try
//somecode
finally
LeaveCriticalSection(CS);
end;
finally
DeleteCriticalSection(CS);
end;
end;

还有利用SyncObjs的TCriticalSection的例子就不写了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐