Blocking API Calls

This page lists the Ice APIs that can potentially block the calling thread. Graphical applications should normally avoid calling these APIs from the "event loop" thread.

The JavaScript mapping does not have any blocking APIs.

All synchronous remote invocations can block, including the built-in proxy operations ice_pingice_isAice_id and ice_ids. Since checkedCast internally calls ice_isA, it too can block.

For asynchronous remote invocations, the begin_ method never blocks but the end_ method can block.

Ice also has a number of local APIs that can block, either because they wait indefinitely for a condition to become true, or because their implementations may make remote invocations:

  • AsyncResult
    • waitForCompleted
    • waitForSent
  • Communicator
    • createAdmin
    • createObjectAdapter
    • createObjectAdapterWithEndpoints
    • createObjectAdapterWithRouter
    • destroy
    • end_flushBatchRequests
    • flushBatchRequests
    • getAdmin
    • shutdown
    • waitForShutdown
  • Connection
    • close
    • end_flushBatchRequests
    • flushBatchRequests
  • ObjectPrx
    • ice_getConnection
  • ObjectAdapter
    • activate
    • deactivate
    • destroy
    • waitForDeactivate
    • waitForHold

The Java mapping allows you to interrupt threads blocked in these APIs.

See Also