The ibrd function is a blocking call, meaning that it will not return until the EOS conditions have been met or a timeout has occurred. This does not necessarily mean that it is using much CPU time while it is waiting, because I believe that it is interrupt-based. The only real downside to ibrd is that it will tie up a thread while it is completing. You can also use ibrda for an asynchronous (non-blocking) call that does the same thing. See the documentation.
Scott B.
GPIB Software
National Instruments