If it works it works!
However, not sure it is behaving quite as you anticipate.
There is a race between the two parallel consumer loops. This is because once an element is dequeued it is unavailable to be read elsewhere, in other words, it is removed from the queue. You would need a second queue from the second to third loop to ensure both signal processing steps receive all the data.