Потокобезопасность
Все функции в этом API безопасно вызывать одновременно из разных потоков. Однако каждый объект, передаваемый в качестве параметра в функции, имеет определенное поведение потоков, как описано ниже.
Следующие дескрипторы являются однопоточными и не поддерживают параллельные операции для конкретного экземпляра:
- WS_HEAP
- WS_MESSAGE
- WS_XML_BUFFER
- WS_XML_READER
- WS_XML_WRITER
- WS_ERROR
- WS_OPERATION_CONTEXT
- WS_POLICY
- WS_METADATA
- WS_SECURITY_TOKEN
- WS_SECURITY_CONTEXT
Следующие дескрипторы являются свободными потоками и поддерживают параллельные операции для конкретного экземпляра:
Для всех этих дескрипторов потоки определяются с точки зрения операций (а не вызовов функций). Операция определяется по-разному для функций, вызываемых синхронно, и для функций, вызываемых асинхронно:
- Для функций, вызываемых синхронно, операция находится в состоянии ожидания во время выполнения функции.
- Для функций, вызываемых асинхронно, если функция возвращает код возврата, отличный от WS_S_ASYNC операция находится в состоянии ожидания во время выполнения функции. Однако если функция возвращает WS_S_ASYNC , операция ожидается до вызова WS_ASYNC_CALLBACK . Дополнительные сведения об асинхронном вызове функций см. в разделе Асинхронная модель . Коды ошибок см. в разделе Возвращаемые значения веб-служб Windows.
Несоблюдение контракта потоков для объекта приведет к неопределенному поведению.