How do you propose to implement duplex IO? And what’s the example case?
With threads the reading and writing can happen simultaneously. The synchronization is only on whatever data you need to share.
Note that if reading and writing are dependent, then single thread actually makes sense because you can’t do one without the other.
Otherwise the pattern of logic you will execute for reading or writing is completely different, which is why threading is the perfect abstraction.