High performance UDP Listener?

G

gregory_may

I am working on an application that needs a high performance UDP Listener.

Currently I have one thread listening to the network and handling the
requests. Currently I need about 70 MS between packets so I dont drop
anything.

I think I need one thread listening to the network and another thread
handling requests. I dont know if I would need an "array queue" to hold
the messages or if I could just use the RaiseEvent signal to notify the
worker thread to process the inbound message.

Anyone seen a code sample/article that could help me out?

g.
 
G

Guest

I did something very similar before with MSMQ. Does it take much time to
process the incoming UDP requests? If not, you could listen on one thread, as
you said, and simply pass the request to the ThreadPool, using the
QueueUserWorkItem method. If it does take a long time to process a request, I
would not advise using the threadpool as it could become starved quickly. In
this scenario, either create new Thread objects manually (which is the quick
option, but could degrade performance if you have too many threads running at
once, leading to too many context switches), or grab the source for one of
the many custom thread pools out there.

Hope this helps.
Dan
 
G

gregory_may

Processing is probably 50 Ms or so, its pretty quick. I will check out the
QueueUserWorkItem you mentioned. I dont expect I should ever have more than
2-3 threads processing at once.

The other article you mentioned (From my previous post) gave an outline of
using the threadpool, I will give it a try:
http://www.yoda.arachsys.com/csharp/threads/

Thanks!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top