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


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

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

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

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

ПримечаниеПримечание

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

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

См. также

Основные понятия

Интерфейс ODBC (ODBC)

Программирование доступа к данным