Потоки и классы 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)