In java, there is nice package java.util.concurrent which holds implementation for BlockingQueue interface.
I need something similar in Haskell, so it will be able to
- maintain fixed size of queue in memory
- block read operations when queue is empty (get)
- provide time-boxed blocks, which will return Nothing if queue is empty and timeout exceeded
- similar for put operations - block until queue has capacity with time-boxed version
probably this could be implemented with STM or blocking transactions - but I was not able to find something like that on hackage.