Поделиться через


Безопасность потоков

Все функции в этом API безопасно вызывать одновременно из разных потоков. Однако каждый объект, переданный в качестве параметра функциям, имеет определенное поведение потоков, как описано ниже.

Следующие дескрипторы являются однопоточными и не поддерживают одновременные операции для определенного экземпляра:

Следующие дескрипторы являются свободными потоками и поддерживают одновременные операции для конкретного экземпляра:

Для всех этих дескрипторов поток определяется с точки зрения операций (а не вызовов функций). Операция определяется по-разному для функций, вызываемых синхронно и асинхронно:

  • Для функций, вызываемых синхронно, операция ожидается во время выполнения функции.
  • Для функций, вызываемых асинхронно, если функция возвращает возвращаемый код, отличный от WS_S_ASYNC операция ожидается во время выполнения функции. Если функция возвращает WS_S_ASYNC, операция ожидается до вызова WS_ASYNC_CALLBACK. Дополнительные сведения об асинхронном вызове функций см. в разделе асинхронной модели. Коды ошибок см. в возвращаемых значений веб-служб Windows.

Неспособность следовать контракту потоков для объекта приведет к неопределенному поведению.