멀티스레딩

다중 스레드 운영 체제에서 드라이버는 스레드로부터 안전해야 합니다. 즉, 애플리케이션이 둘 이상의 스레드에서 동일한 핸들을 사용할 수 있어야 합니다. 이를 달성하는 방법은 드라이버별로 다르며, 드라이버가 두 개의 서로 다른 스레드에서 동일한 핸들을 동시에 사용하려는 시도를 직렬화할 가능성이 높습니다.

애플리케이션은 일반적으로 비동기 처리 대신 여러 스레드를 사용합니다. 애플리케이션은 별도의 스레드를 만들고, ODBC 함수를 호출한 다음, 기본 스레드에서 처리를 계속합니다. SQL_ATTR_ASYNC_ENABLE 문 특성을 사용하는 경우처럼 비동기 함수를 지속적으로 폴링하지 않고 애플리케이션에서 새로 만든 스레드를 완료하도록 할 수 있습니다.

문 핸들을 수락하고 한 스레드에서 실행되는 함수는 다른 스레드에서 동일한 문 핸들을 사용하여 SQLCancel을 호출하여 취소할 수 있습니다. 드라이버는 이러한 방식으로 SQLCancel 사용을 직렬화해서는 안 되지만 SQLCancel을 호출하면 실제로 다른 스레드에서 실행되는 함수가 취소된다는 보장은 없습니다.