I believe the OCaml idiom for this is to use Unix.select with empty lists for all THREE of the descriptor lists... and this does work on Windows.
Note, on Unix at least, you need to wrap the call to select in an exception handler, since select can be interrupted, at which point the call throws an exception.