I am trying to design a software in c++ that will send request bytes (following a standard \*\*application level\*\* protocol whose fields to be populated will be taken from a text file) using \*\*UDP protocol\*\*. Now this client must be able to send these requests at very high rate..upto \*\*2000 transactions per second\*\* and should also receive the response if it gets within a specified timeout else don't receive it

I will be using boost library for all the socket things but I am not sure about the design of it for such high speed application :(

I think I have to use a highly multi-threaded application (again Boost will be used). Am I right ? Do I have to create a seperate thread for each request ? But I think only one thread must be waiting to recieve the response else if many threads are waiting for a response how can we distinguish for which threads request we have got the response for !!

Hope that question is clear. I just need some help regarding the design points and suspected problems that I may face.