The reason is that pipes cannot be read and written at the same time, and that doing read/writes asynchronously will cause more system interrupts than simply doing it on a single thread.