Freigeben über


ODBC-Klassen und Threads

Ab MFC 4.2 gibt es Multithreadingunterstützung für die MFC ODBC-Klassen. Beachten Sie jedoch, dass MFC keine Unterstützung für Multithreading für die DAO-Klassen bereitstellt.

Die Multithreading-Unterstützung für die ODBC-Klassen weist einige Einschränkungen auf. Da diese Klassen die ODBC-API umschließen, sind sie auf die Multithreadunterstützung der Komponenten beschränkt, auf denen sie erstellt werden. Beispielsweise sind viele ODBC-Treiber nicht threadsicher; Daher sind die MFC ODBC-Klassen nicht threadsicher, wenn Sie sie mit einem dieser Treiber verwenden. Sie sollten überprüfen, ob ihr bestimmter Treiber threadsicher ist.

Beim Erstellen einer Multithreadanwendung sollten Sie bei der Verwendung mehrerer Threads zum Bearbeiten desselben Objekts sehr vorsichtig sein. Die Verwendung desselben CRecordset Objekts in zwei Threads kann beispielsweise beim Abrufen von Daten zu Problemen führen. Bei einem Abrufvorgang in einem Thread werden die im anderen Thread abgerufenen Daten möglicherweise überschrieben. Eine häufigere Verwendung der MFC ODBC-Klassen in separaten Threads besteht darin, ein offenes CDatabase Objekt über Threads hinweg freizugeben, um dieselbe ODBC-Verbindung mit einem separaten CRecordset Objekt in jedem Thread zu verwenden. Beachten Sie, dass Sie kein ungeöffnetes CDatabase Objekt an ein Objekt in einem CRecordset anderen Thread übergeben sollten.

Hinweis

Wenn Sie über mehrere Threads verfügen müssen, die dasselbe Objekt bearbeiten müssen, sollten Sie die entsprechenden Synchronisierungsmechanismen implementieren, z. B. kritische Abschnitte. Beachten Sie, dass bestimmte Vorgänge, z Open. B. , nicht geschützt sind. Sie sollten sicherstellen, dass diese Vorgänge nicht gleichzeitig von separaten Threads aufgerufen werden.

Weitere Informationen zum Erstellen von Multithreadanwendungen finden Sie unter "Multithreading Topics".

Siehe auch

Open Database Connectivity (ODBC)
Datenzugriffsprogrammierung (MFC/ATL)