Поделиться через


Потоки и классы ODBC

Начиная с MFC 4.2, существует многопоточность для классов ODBC MFC. Обратите внимание, что MFC не предоставляет многопоточность для классов DAO.

Поддержка многопоточных классов ODBC имеет некоторые ограничения. Так как эти классы упаковывают API ODBC, они ограничены поддержкой многопоточных компонентов, на которых они созданы. Например, многие драйверы ODBC не являются потокобезопасными; Поэтому классы ODBC MFC не являются потокобезопасными, если они используются с одним из этих драйверов. Необходимо проверить, является ли конкретный драйвер потокобезопасной.

При создании многопоточного приложения следует быть очень осторожным при использовании нескольких потоков для управления тем же объектом. Например, использование одного и того же CRecordset объекта в двух потоках может привести к проблемам при получении данных; операция получения в одном потоке может перезаписать данные, извлекаемые в другом потоке. Более распространенное использование классов ODBC MFC в отдельных потоках заключается в совместном использовании открытого CDatabase объекта между потоками для использования одного подключения ODBC с отдельным CRecordset объектом в каждом потоке. Обратите внимание, что не следует передавать нераскрытый CDatabase объект CRecordset объекту в другом потоке.

Примечание.

Если у вас должно быть несколько потоков, которые управляют тем же объектом, следует реализовать соответствующие механизмы синхронизации, такие как критические разделы. Помните, что некоторые операции, например Open, не защищены. Необходимо убедиться, что эти операции не будут вызываться одновременно из отдельных потоков.

Дополнительные сведения о создании многопоточных приложений см. в разделах о многопоточных возможностях.

См. также

Интерфейс ODBC
Программирование доступа к данным (библиотеки MFC/ATL)