Como implementar um canal full duplex sobre TCP com um único thread?

A lib de rede que estou escrevendo precisa enviar e receber mensagens através de um soquete TCP. As mensagens podem ser enviadas ou recebidas a qualquer momento, ou seja, devem funcionar como um canal full-duplex.

Consegui implementar esse cenário usando dois threads: thread principal chamando send () e um thread dedicado bloqueado principalmente na chamada recv ().

Minha pergunta é: é possível implementar o mesmo cenário com um único thread? I.e. registrando alguma função de retorno de chamada?

Como uma observação lateral: preciso implementar esse cenário em C ++, Java e Python.

questionAnswers(2)

yourAnswerToTheQuestion