イベント待ち関数

Windows ではマルチスレッド用にイベントという仕組みがある。
通常の動作では、1つのイベントを1つ以上のスレッドが待っているとき、各スレッドは待ち状態で CPU を解放しており、別のスレッドがイベントをセットすると、待機していたスレッドのうち1つ (どれになるかは運次第?) が動きだすというものである。
UNIX の pthread プログラミングで同じような動作をさせようとするとき、条件変数を使うのが普通だと思っていたが、もっと簡単に pipe() で名前無しパイプを作っておき、待機側では select で待っておき、別スレッドから write で 1 バイトくらい流し込んでやれば、同じような動作ができるような気がした。このほうが、pthread の関数より軽そうなのだが、どうだろうか。
(あっ、ResetEvent のようなことができないか。でも普通は要らないし...)