Freigeben über


Multithreading

Bei Multithread-Betriebssystemen müssen Treiber threadsicher sein. Das heißt, es muss für Anwendungen möglich sein, dasselbe Handle für mehrere Threads zu verwenden. Wie dies erreicht wird, ist treiberspezifisch, und es ist wahrscheinlich, dass Treiber alle Versuche serialisieren, gleichzeitig dasselbe Handle in zwei verschiedenen Threads zu verwenden.

Anwendungen verwenden häufig mehrere Threads anstelle einer asynchronen Verarbeitung. Die Anwendung erstellt einen separaten Thread, ruft eine ODBC-Funktion darauf auf und setzt dann die Verarbeitung im Standard Thread fort. Anstatt die asynchrone Funktion kontinuierlich abfragen zu müssen, wie dies der Fall ist, wenn das attribut der SQL_ATTR_ASYNC_ENABLE-Anweisung verwendet wird, kann die Anwendung einfach das neu erstellte Threadende beenden lassen.

Funktionen, die ein Anweisungshandle akzeptieren und in einem Thread ausgeführt werden, können durch Aufrufen von SQLCancel mit demselben Anweisungshandle aus einem anderen Thread abgebrochen werden. Obwohl Treiber die Verwendung von SQLCancel auf diese Weise nicht serialisieren sollten, besteht keine Garantie dafür, dass das Aufrufen von SQLCancel die funktion abbricht, die auf dem anderen Thread ausgeführt wird.