Multithreading

Em sistemas operacionais multithread, os drivers devem ser thread-safe. Ou seja, deve ser possível que os aplicativos usem o mesmo identificador em mais de um thread. A forma como isso é alcançado é específica do driver, e é provável que os drivers serializem quaisquer tentativas de usar simultaneamente o mesmo identificador em dois threads diferentes.

Os aplicativos geralmente usam vários threads em vez de processamento assíncrono. O aplicativo cria um thread separado, chama uma função ODBC nele e, em seguida, continua o processamento no thread principal. Em vez de ter que sondar continuamente a função assíncrona, como é o caso quando o atributo de instrução SQL_ATTR_ASYNC_ENABLE é usado, o aplicativo pode simplesmente deixar o thread recém-criado terminar.

As funções que aceitam um identificador de instrução e estão em execução em um thread podem ser canceladas chamando SQLCancel com o mesmo identificador de instrução de outro thread. Embora os drivers não devam serializar o uso do SQLCancel dessa maneira, não há garantia de que chamar SQLCancel realmente cancelará a função em execução no outro thread.