Точнее не потоко-безопасных, а конкурентных. То есть, интересует как реализуется клиент-серверный протокол, с которым можно работать из разных потоков через одно соединение.
Thread1 --> conn.send(data1) --> conn.recv() // Reply for data1? Thread2 --> conn.send(data2) --> conn.recv() // Reply for data2?
Или я хочу странных вещей и все просто открывают несколько соединений?