se mi dai un po di tempo ti faccio una struttura base

che usa i forks e le socket asincrone

in questo modo fai una cosa molto semplice

ad es apri 50 forks e poi ogni forks gestisce 20 sockets (ovvero 20 connessioni)

20 connessioni * 50 = 1000 a volta

lui tiene la quantità di forks aperte a 50 e queste comunicano tramite una socket unix passando le informazioni che devono passare in forma di array serializzato definendo il fork da cui vengono. Dall'array serializzato leggi quello che ti serve

in questo modo nn accoppi il picci xche 50 fork sono abb poche e vai abbastanza veloce
credo che in un 2/3 ore dovresti finire di fare il tutto

ovviamente se hai una macchina + potente con banda maggiore puoi anche incrementare il numero di sockets e forks contemporanei

xo x fare il tutto c'ho bisogno un po di tempo ))