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.
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour