> While I agree that hundreds of threads seems like overkill, I think the
> above advice might be going too far in the other direction. The problem
> with single-threaded operation is that any delay affects the whole
> system --- eg, if you're blocked waiting for disk I/O, the CPU doesn't
You use UDP which is a connectionless protocol... then why use threads ?
I'd advise this :
Use asynchronous network code (one thread) to do your network stuff. This
will lower the CPU used by this code immensely.
Every minute, dump a file contianing everything to insert into the table.
Use another thread to COPY it into the DB, in a temporary table if you
wish, and then INSERT INTO ... SELECT.
This should be well adapted to your requirements.