title: ConcurrentQueue that allows me to wait on one producer
body: <p>I've a problem of Producer/Consumer. Currently I've a simple <code>Queue</code> surrounded by a <code>lock</code>.</p>
  
  <p>I'm trying to replace it with something more efficient.</p>
  
  <p>My first choice was to use a <code>ConcurrentQueue</code>, but I don't see how to make my consumer wait on the next produced message(without doing Thread.Sleep).</p>
  
  <p>Also, I would like to be able to clear the whole queue if its size reach a specific number.</p>
  
  <p>Can you suggest some existing class or implementation that would match my requirements?</p>