Asynchronous service providers

This document explains the use of asynchronous service providers.

In a multiprocessing system, user programs wait for events, for example, keyboard input, pointer input, completion of an I/O request, timer events etc. These events, and the services associated with them, are provided by asynchronous service providers.

A program has a main loop that:

  • calls appropriate service providers

  • waits for events

  • acts on completed events, resulting, most likely, in further calls to service providers.

All Symbian platform programs make extensive use of asynchronous services. For this reason, Symbian platform provides mechanisms which make them easy to use.

Low-level asynchronous service handling encompasses:

  • the asynchronous service provider, which provides asynchronous services using request functions and cancel functions.

  • the asynchronous request status which indicates the completion status of a request.

  • the thread request semaphore, the means by which a service provider signals to a requester that it has completed a request.

High-level asynchronous service handling encompasses

  • the active scheduler, which encapsulates the wait loop which is at the heart of all programs using multiple asynchronous services.

  • active objects, which encapsulate an asynchronous service provider, its request and cancel functions, and the function which handles completion of requests.