Freigeben über


Multithreading (Mehrfachverarbeitung)

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 Hauptthread fort. Anstatt die asynchrone Funktion kontinuierlich abfragen zu müssen, wie es der Fall ist, wenn das SQL_ATTR_ASYNC_ENABLE-Attribut der Anweisung verwendet wird, kann die Anwendung den neu erstellten Thread einfach zu Ende laufen 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.