I'm trying to understand how to model a simple pass through module correctly.  Let's say I've got 3 threads/modules A, B, and C such that A sends messages to B which forwards them to C (A --> B  --> C). A naive approach for thread B: sc_fifo<Message> incoming_fifo("incoming", 3); sc_fifo<Message> outgoing_fifo("outgoing", 3); thread_A(){ while(true){ Message msg = new Message(); incoming_fifo.write(msg); } } thread_B(){ Message msg; while(true){