Требования к контексту многопоточного приложения
Ниже перечислены требования, предъявляемые к контексту потока:
-
переменная sqlca должна объявляться как переменная типа
auto
отдельно для каждого потока. Для этого необходимо задать ее явно в претранслируемом модуле потока. Например:void __stdcall thread(void) { EXEC SQL MODULE M1; struct sqlca sqlca; . . . EXEC SQL END MODULE M1; }
-
переменные основного языка должны объявляться как переменные класса памяти
auto
для каждого потока. Если главные переменные объявляются как глобальные или переменные типаstatic
, нужно внимательно следить за их использованием в разных потоках; -
использовать отдельный модуль встроенного SQL для каждого потока, т.к. в этом случае происходит создание локальных дескрипторов БД, заданных явно, и дескрипторов предложений встроенного языка;
-
использовать явное задание соединения внутри каждого потока;
-
все ссылки к курсору должны быть только внутри того же исходного модуля.