coding, photo, plant and demo

*condvarとsocketの困った関係

tech 20081226 004434
unixでイベントループを書くと、大概はselectを使うことになるのだけど、
pthreadのcondvarでループを書くこともあれば、
fdもcondvarも同時に待ちたいこともある。
そうなるとselectじゃ待てなくて途方にくれる。

win32だったら何でもかんでもWaitForMultipleObjects系で待てるんだから、
linuxでも何か手があるんじゃないか?
とgoogleに聞くと、やっぱ困っているひとは居るようで。

Socket/Pipe and Condition Variables (select + cond_wait?)
http://unix.derkeiler.com/Newsgroups/comp.unix.programmer/2007-02/msg00393.html

読むと話がずれてる感あるけど、結局pipeを使って起こすという話。実際それしかない気がする。
ポーリングって60fpsで動けばいいや的なノリですか。いいのか?だめだろう。

てことで、win32の同期系APIは後発の分よくできている、と言いたいところだけど、
便利さや効率を追求する余りAPIが乱立しすぎで美しくないのも事実。
OSの設計は難しいですね。