前回の実装のなかで、CriticalSectionを使用して排他をかけるもの(Unit12)がありましたが、Delphi 2009の新機能のなかにMonitor (ja)という同期メカニズムがあります。そこでCriticalSectionのかわりにMonitorを使用したバージョンを作ってみました。
元ねたは
What is TMonitor in Delphi System unit good for? - Stack Overflow
Monitor (synchronization) - Wikipedia, the free encyclopedia (ja)
Craig Stuntz’s Weblog : Why Has the Size of TObject Doubled In Delphi 2009?
The Oracle at Delphi » Simmering Unicode, bring DPL to a boil
The Oracle at Delphi » Simmering Unicode, bring DPL to a boil (Part 2)
The Oracle at Delphi » Breaking the rules
あたり。System.TMonitorの詳しい説明とかサンプルはないんでしょうか?
2011/04/15追記: .NET FrameworkのMonitorクラスの説明が参考になりそうです。
Monitor クラス (System.Threading)
実装例は第15回 エンバカデロ・デベロッパーキャンプの【A5】Delphi/C++テクニカルセッション「詳説!DataSnap 2010」のコネクションプーリングの実装あたりでしょうか(高橋さん、いつも情報ありがとうございます)。
2011年4月14日
登録:
コメントの投稿 (Atom)
3 件のコメント:
.NETのMonitorをDelphi(Win32)にマッピングしたものですが、docwikiの関数リストではどうですか?
http://docwiki.embarcadero.com/VCL/ja/System.TMonitor_Functions
第15回 エンバカデロ・デベロッパーキャンプ
の
【A5】Delphi/C++テクニカルセッション「詳説!DataSnap 2010」
http://conferences.embarcadero.com/article/images/40256/a5.pdf
で、System.TMonitorの使用例(コネクションプーリング実装)を書いています。
ヘルプ(docwiki)の説明は…個々の関数の説明はあれでもよいのでしょうけど、あれを見てTMonitorを使おうという判断はちょっと難しいように思います。Allen Bauerさんの説明だとCriticalSectionを使うところには等価で置き換えられる、ということですが、じゃあ何が違ってTMonitorのどこがいいのか、といったところが不足かな、と。
デベロッパーキャンプのサンプルは、そもそもこのアーティクル(TMonitor版)を書こうと思ったきっかけなのです。
コメントを投稿