排他制御

書き方によってはSMP環境ではInitializeCriticalSectionを超えてEnterCriticalSectionが呼ばれる事があるらしい。
http://qdbm.sourceforge.net/mikio/rbbs.cgi?id=RA11382882410466743702
でも自分が使ってるCLockとCCriticalSectionだと問題は無いかなぁ。CCriricalSectionはmember変数にしてるから確実にEnterCriticalSectionされる前にコンストラクタが走ってInitializeCriticalSectionされるし、問題無いかなぁ。ただ、排他制御の為だけにmember変数を持つって言うのは意識するものが増えるって意味では無駄だろうか。あと、この問題には引っかからないとしても、自分が作ったプログラムが排他制御がいいかげんなのでやばい事には変わらないか…。

http://exe.adam.ne.jp/j/win32_multithread_application_debugging.html
の最後で書かれてるように、早期の正しい知識の教育受けとけば良かったなぁ。

メータードセクションとかって実際に使ったこと無いけど便利なのかな?
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndllpro/htm/metrsect.asp

効率を追求するとInterlocked系を使えるところではそれにした方が良いらしい。
http://www.codeproject.com/threads/spinlocks.asp?df=100&forumid=1354&exp=0&select=66218

スレッド使って処理を分離して記述すると見通しとか管理はしやすくなるけど、コンテキストスイッチとかの切り替えが起こってハードウェアスレッド数が少ないCPUだと効率が悪くなるっぽいので、なるべくやらないようにした方が良いみたい。

IOCPとかの非同期IOを使った覚えが無いけど、どれだけ効率に違いが出るんだろう?
http://pc8.2ch.net/test/read.cgi/unix/1010933537/
http://www5d.biglobe.ne.jp/~y0ka/2006-07-30-1.html