| 72) |
| |
| [-pipeline---------------------------------------------------------------------------------------------] |
| ! [-bin-----------------------------] [-thread---------] ! |
| ! ! [--------] [---------] ! [------] [---------] [------] ! [--------] ! ! |
| ! ! !faksesrc! !identity1! ! !queue1! !identity2! !queue2! ! !fakesink! ! ! |
| ! ! ! src --- sink * src --- sink n src -- sink src -- sink src -- sink ! ! ! |
| ! ! [--------] [---------] ! [------] [---------] [------] ! [--------] ! ! |
| ! [---------------------------------] [----------------] ! |
| [------------------------------------------------------------------------------------------------------] |
| |
| |
| ----- |
| Ideally, you'd end up with the following sub-pipelines |
| |
| pipeline: |
| fakesrc -> identity1 -> queue1 |
| queue1 -> identity2 -> queue2 |
| |
| thread: |
| queue2 -> fakesink |
| |
| |
| They'd be scheduled as following: |
| |
| fakesrc: passive chained, pulled by identity1 |
| identity1: loopfunc cothreaded, ENTRY |
| queue1:sink: passive chained, pushed by identity1 |
| |
| queue1:src: _get-based iteration, ENTRY |
| identity2: chained by queue1 |
| queue2:src: passively chained, pushed by identity2 |
| |
| queue2:sink: passively chained, pulled by fakesink |
| fakesink: loopfunc cothreaded, ENTRY |
| |
| |
| ----- |
| Most likely, we'd end up with the following |