Multithreading

Sur les systèmes d’exploitation multithread, les pilotes doivent être thread-safe. Autrement dit, il doit être possible que les applications utilisent le même handle sur plusieurs threads. La façon dont cela est obtenu est spécifique au pilote et il est probable que les pilotes sérialisent toutes les tentatives d’utilisation simultanée du même handle sur deux threads différents.

Les applications utilisent généralement plusieurs threads au lieu du traitement asynchrone. L’application crée un thread distinct, appelle une fonction ODBC dessus, puis continue le traitement sur le thread principal. Au lieu d’interroger continuellement la fonction asynchrone, comme c’est le cas lorsque l’attribut d’instruction SQL_ATTR_ASYNC_ENABLE est utilisé, l’application peut simplement laisser le thread nouvellement créé se terminer.

Les fonctions qui acceptent un handle d’instruction et qui s’exécutent sur un thread peuvent être annulées en appelant SQLCancel avec le même handle d’instruction à partir d’un autre thread. Bien que les pilotes ne doivent pas sérialiser l’utilisation de SQLCancel de cette façon, il n’existe aucune garantie que l’appel de SQLCancel annule réellement la fonction en cours d’exécution sur l’autre thread.