Usage of queues:
import scalaz.stream.{Sink, async, sink}
import scalaz.stream.async.mutable.Queue
import scalaz.stream.sink._
val p:Task[Unit] = Task.delay(println("Hello"))
val p1:Queue[Int] = async.boundedQueue(100)
//
val func:Int=>Task[Unit] = (i:Int) => Task.now(i)
val mySink:Sink[Task, Int] = sink.lift(func)
val p2 = p1.enqueueAll(Seq(1,2,3))
p2.run
val outputSink = sink.lift[Task, Unit](i => Task.delay(println(i)))
val p3 = p1.size.continuous.once
p3.runLog.run //Vector(3)