use linked queue instead of array backed

producers were hoarding the global lock the array version uses in
some cases