Hi,
My configuration: Ice 3.3.1, Windows XP.
Scenario 1:
I have an application that contains multiple threads (i.e. .NET Thread class) making periodic calls on proxies to servants located on a remote machine. Each of the proxy method calls were timed using .NET Stopwatch, and reported expected timing results (<20ms).
Scenario 2:
The application was then configured to activate some code that listens for UDP packets asynchronously using UdpClient.BeginReceive(). When a message is received the callback handler ultimately calls a method on the proxy. N.B. the thread described in scenario 1 is also still periodically calling the proxy as well. However, for this scenario the proxy methods were taking an enternity to complete, e.g. (~1000ms).
FYI. I played around with using thread pools in the Ice config file, but this made no difference.
After much head scratching I modified the code to use a worker thread to process the UDP messages. This change resulted in a normal and responsive behaviour.
So here is my question: What is going on under the covers that impacts Ice network performance when concurrently using UdpClient? On the surface it appears to be some kind of thread starvation down at the low level.
Cheers John



Reply With Quote