Threads et classes ODBC
À compter de MFC 4.2, il existe une prise en charge multithread des classes ODBC MFC. Notez toutefois que MFC ne fournit pas de prise en charge multithreading pour les classes DAO.
La prise en charge multithreading pour les classes ODBC présente certaines limitations. Étant donné que ces classes encapsulent l’API ODBC, elles sont limitées à la prise en charge multithread des composants sur lesquels elles sont générées. Par exemple, de nombreux pilotes ODBC ne sont pas thread-safe ; Par conséquent, les classes ODBC MFC ne sont pas thread-safe si vous les utilisez avec l’un de ces pilotes. Vous devez vérifier si votre pilote particulier est thread-safe.
Lors de la création d’une application multithread, vous devez être très prudent lors de l’utilisation de plusieurs threads pour manipuler le même objet. Par exemple, l’utilisation du même CRecordset
objet dans deux threads peut entraîner des problèmes lors de la récupération des données ; une opération d’extraction dans un thread peut remplacer les données extraites dans l’autre thread. Une utilisation plus courante des classes ODBC MFC dans des threads distincts consiste à partager un objet ouvert CDatabase
entre les threads pour utiliser la même connexion ODBC, avec un objet distinct CRecordset
dans chaque thread. Notez que vous ne devez pas passer un objet non ouvert CDatabase
à un objet dans un CRecordset
autre thread.
Remarque
Si plusieurs threads doivent manipuler le même objet, vous devez implémenter les mécanismes de synchronisation appropriés, tels que les sections critiques. N’oubliez pas que certaines opérations, telles que Open
, ne sont pas protégées. Vous devez être sûr que ces opérations ne seront pas appelées simultanément à partir de threads distincts.
Pour plus d’informations sur la création d’applications multithread, consultez rubriques sur le multithreading.
Voir aussi
ODBC (Open Database Connectivity)
Programmation de l’accès aux données (MFC/ATL)