私は、ソケットの動作をエミュレートするクロスプラットフォーム ライブラリを作成しており、その間に追加機能があります (App->mylib->sockets)。
プログラマーにとって可能な限り透過的にしたいので、 select や poll などのプリミティブは、この lib に応じて機能する必要があります。
問題は、データが実際のソケットで (たとえば) 利用可能になると、多くの処理を行う必要があるため、select が実際のソケット fd を指している場合、アプリは長時間ブロックされます。データが消費される準備ができた場合にのみ、選択/ポーリングのブロックを解除したい (私のライブラリがすべての処理を完了した後)。
だから私はこのeventfdに出くわしました。これにより、私がやりたいことを正確に行うことができます。
私は Linux 環境に精通しているため、windows での eventfd に相当するものは何なのかわかりません。検索しようとしましたが、運がありませんでした。
注: 別の方法として、インターフェイスに接続された別のソケットを使用することもできますが、これはオーバーヘッドが大きいようです。Windowsにこの機能がない(そう見える)という理由だけで、すべてのデータでシステムコールを行う。
または、車輪を再発明して、独自の選択を実装することもできます。=/