Задача такова, что в создаваемом приложении необходимо коннектиться к множеству серверов и обмениваться TCP пакетами, отслеживать таймауты и вести нехитрую обработку. Суть в том, что не хотелось бы использовать pthreads и держать каждое клиентское подключение в отдельном потоке. Нагуглил libevent, начал изучать, вроде бы удобно все. Но я не понимаю, как открыть нужное количество клиентских сокетов и обрабатывать их в одном потоке?
К примеру я открыл сокет, через libevent опрашиваю его дескриптор, по событиям пишу, читаю, таймауты обрабатываю. Но как подобным образом обрабатывать n-ое количество сокетов? Неужели только потоки? И вообще, пусть даже без libevent, как на неблокирующих сокетах реализуется подобное?