Функция CreateFiberEx (winbase.h)

Выделяет объект fibre, назначает ему стек и настраивает выполнение для начала с указанного начального адреса, как правило, функции fibre. Эта функция не планирует волокно.

Синтаксис

LPVOID CreateFiberEx(
  [in]           SIZE_T                dwStackCommitSize,
  [in]           SIZE_T                dwStackReserveSize,
  [in]           DWORD                 dwFlags,
  [in]           LPFIBER_START_ROUTINE lpStartAddress,
  [in, optional] LPVOID                lpParameter
);

Параметры

[in] dwStackCommitSize

Начальный размер фиксации стека в байтах. Если этот параметр равен нулю, новое волокно использует размер стека фиксаций по умолчанию для исполняемого файла. Дополнительные сведения см. в разделе Размер стека потоков.

[in] dwStackReserveSize

Начальный размер резерва стека в байтах. Если этот параметр равен нулю, новое волокно использует зарезервированный размер стека по умолчанию для исполняемого файла. Дополнительные сведения см. в разделе Размер стека потоков.

[in] dwFlags

Если этот параметр равен нулю, состояние с плавающей запятой в системах x86 не переключается и данные могут быть повреждены, если волокно использует арифметические операции с плавающей запятой. Если этот параметр имеет FIBER_FLAG_FLOAT_SWITCH, состояние с плавающей запятой переключается для волокон.

Windows XP: Флаг FIBER_FLAG_FLOAT_SWITCH не поддерживается.

[in] lpStartAddress

Указатель на определяемую приложением функцию, выполняемую волокном, и представляет начальный адрес волокна. Выполнение созданного волокна не начинается до тех пор, пока другое волокно не вызовет функцию SwitchToFiber с этим адресом. Дополнительные сведения о функции обратного вызова fibre см. в разделе FibreProc.

[in, optional] lpParameter

Указатель на переменную, передаваемую волокну. Волокно может получить эти данные с помощью макроса GetFiberData .

Возвращаемое значение

Если функция выполняется успешно, возвращаемым значением будет адрес волокон.

Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Количество волокон, которые может создать процесс, ограничено доступной виртуальной памятью. По умолчанию каждое волокно имеет 1 мегабайт зарезервированного пространства стека. Таким образом, можно создать не более 2028 волокон. Если уменьшить размер стека по умолчанию, можно создать больше волокон. Однако производительность приложения будет выше, если вы используете альтернативную стратегию обработки запросов.

Прежде чем поток сможет запланировать волокно с помощью функции SwitchToFiber , он должен вызвать функцию ConvertThreadToFiber , чтобы с потоком было связано волокно.

Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0400 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

ConvertThreadToFiber

FibreProc

Волокон

GetFiberData

Функции процессов и потоков

SwitchToFiber