Subprocesamiento múltiple
En los sistemas operativos multiproceso, los controladores deben ser seguros para subprocesos. Es decir, las aplicaciones deben poder usar el mismo identificador en más de un subproceso. Cómo se logra esto depende de cada controlador y es probable que los controladores serialicen los intentos de usar simultáneamente el mismo identificador en dos subprocesos diferentes.
Las aplicaciones suelen usar varios subprocesos en lugar del procesamiento asincrónico. La aplicación crea un subproceso independiente, llama a una función ODBC en él y, a continuación, continúa procesando en el subproceso principal. En lugar de tener que sondear continuamente la función asincrónica, como sucede cuando se usa el atributo de instrucción SQL_ATTR_ASYNC_ENABLE, la aplicación simplemente puede dejar que finalice el subproceso recién creado.
Las funciones que aceptan un identificador de instrucción y se ejecutan en un subproceso se pueden cancelar llamando a SQLCancel con el mismo identificador de instrucción desde otro subproceso. Aunque los controladores no deberían serializar el uso de SQLCancel de esta manera, no hay ninguna garantía de que llamar a SQLCancel cancelará realmente la función que se ejecuta en el otro subproceso.