Why do I not get concurrent replies to asynchronous invocations?

Just as there is a server-side thread pool, there is a corresponding client-side thread pool. The client-side thread pool is used to dispatch replies to asynchronous method invocations (AMI) and to process requests received via bidirectional connections.

Like the server-side pool, the client-side pool has a default size of one. If your client sends several asynchronous invocations and you expect to receive replies to these invocations concurrently but, in reality, all the replies are serialized, it is likely that the client-side thread pool is at its default size of one.

The size of the client-side thread pool is controlled by the following properties:

  • Ice.ThreadPool.Client.Size
  • Ice.ThreadPool.Client.SizeMax
  • Ice.ThreadPool.Client.SizeWarn

The defaults and meaning of these properties are analogous to the ones for the server-side pool.

See Also