nlehuen/capisce — pull request #1 by penartur (2012-05-03 11:00:41+00:00)
Title: Fixed hold/go behaviour

Previously, `go` function would only run a single worker, which meant, that using `hold`/`go` on `WorkingQueue` effectively makes it sequential / synchronous:
- Create a `new WorkingQueue(100)` and `hold` it - there is 0 entries in queue and 0 workers, `concurrency = 100`;
- `perform` 1000 tasks to WorkingQueue - there is 1000 entries in queue and 0 workers;
- `go` WorkingQueue - there is 999 entries in queue and 1 worker;
- After the first task has been done, there is 0 workers; `go` is called again; there is 998 entries in queue and 1 worker now;
- etc...

I modified the `go` function to create as many workers as possible (until the total number of workers reaches the `concurrency` limit or the queue becomes empty).