DELPHI跨平台的臨界替代者

2022-06-07 15:12:11 字數 983 閱讀 1248

在windows裡面使用臨界來保護多執行緒需要訪問的共享物件,現在,delphi有了新的跨平台臨界保護者--system.tmonitor

**演示如下:

fconnections := tobjectdictionary.create;

procedure tcmserverform.cmservertransportdisconnectevent(event: tdstcpdisconnecteventobject);

varindex: integer;

begin

if (fconnections = nil) or (event.connection = nil) then

exit;

//進入臨界保護

system.tmonitor.enter(fconnections);

tryfconnections.remove(tidtcpconnection(event.connection));

tthread.synchronize(nil, procedure

begin

//update the connection list box, removing the connection that was just closed

index := connectionslist.items.indexofobject(event.connection);

if index > -1 then

begin

connectionslist.items.delete(index);

if connectionslist.selcount = 0 then

sessionidlist.clearselection;

end;

end);

finally

// 終止臨界保護

system.tmonitor.exit(fconnections);

end;

end;

BackgroundWorker的替代者

樓主oldhunter 老獵人 2006 04 23 23 43 34 在 net技術 元件 控制項 開發提問 用過2.0中backgroundworker的估計都有遭遇不爽的經歷,網上有文章說已經被定為bug了.無bug版本估計要等.net的下乙個build了.前兩天寫了個backgroundwo...

localtime 的效能問題及其替代者

在系統從redhat5公升到redhat6的過程中,服務的效能差了很多。經過定位發現是程式中頻繁呼叫localtime localtime r所致。而呼叫localtime r 的實現中,對時區進行了加鎖,有bug反饋其有切換的效能損耗。修復服務程式就有兩種思路。1.減少localtime r的呼叫...

GDI 的替代者 D2D

winform中的2d繪圖,以前用的都是gdi 在簡單應用環境下,如果不在乎速度,gdi 可以表現的很好。機緣巧合,前段時間做了乙個簡單的3d程式,使用的是c 託管 directx9 sdk,平台是win7 vs2012。專案做完以後,回顧發現,其實也可以使用directx11的direct2d來進...