Are we suffering from a lack of vision, or is some way of checking the number of items on a queue inevitable?
The problem with these sorts of functions is that the results that they give can't, in general, be used for much. For instance, if IsQueueEmpty returns "true", that answer isn't worth very much if, by the time you act on that information, some other thread could have added an item to the queue. They're dangerous functions to have around, since often people will be tempted to use them inappropriately, relying on the answer even where the potential exists for other threads to perform concurrent operations on the same queue. But there are certainly cases where their use is appropriate, and it sounds like you have one of those cases here (assuming no thread or interrupt handler is going to add more items to the queue as it drains). In summary: it can be useful to have such a function, but it probably won't (and shouldn't) be used often.