在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來進...