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.