Thread Blocking

Generally, each User Interface Library function blocks access to the library from other threads until it returns. Other threads that attempt to call the library must wait until the active call returns. However, the library functions do not block while they wait for events from the operating system, nor do they block when they invoke callback functions.

Normally, the period of time in which the blocking occurs is short. However, some functions, such as graph plotting functions, might take a considerable amount of time to complete, even though they do not process events or invoke callbacks.

Other functions in the User Interface Library do not block PostDeferredCall and PostDeferredCallToThread. Thus, you can call PostDeferredCall or PostDeferredCallToThread in an asynchronous callback, without a long delay. If calls to these functions occur at the same time in different threads, they might block for a short time to protect the global list of deferred calls.