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.

Reply via email to