¿Cómo implementar un canal full duplex a través de TCP con un solo hilo?

La lib de red que estoy escribiendo necesita enviar y recibir mensajes a través de un socket TCP. Los mensajes se pueden enviar o recibir en cualquier momento, es decir, deberían funcionar como un canal dúplex completo.

Pude implementar tal escenario usando dos hilos: hilo principal que llama a send () y un hilo dedicado bloqueado principalmente en la llamada recv ().

Mi pregunta es: ¿es posible implementar el mismo escenario con un solo hilo? Es decir. registrando alguna función de devolución de llamada?

Como nota al margen: necesito implementar este escenario en C ++, Java y Python.

Respuestas a la pregunta(2)

Su respuesta a la pregunta