Безопасность потоков
Все функции в этом 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.
Неспособность следовать контракту потоков для объекта приведет к неопределенному поведению.