Функция CreateFiber (winbase.h)
Выделяет объект fibre, назначает ему стек и настраивает выполнение для начала с указанного начального адреса, как правило, функции fibre. Эта функция не планирует работу с оптоволокном.
Чтобы указать размер стека фиксации и резервирования, используйте функцию CreateFiberEx .
Синтаксис
LPVOID CreateFiber(
[in] SIZE_T dwStackSize,
[in] LPFIBER_START_ROUTINE lpStartAddress,
[in, optional] LPVOID lpParameter
);
Параметры
[in] dwStackSize
Начальный зафиксированный размер стека в байтах. Если этот параметр равен нулю, новое волокно использует размер стека фиксаций по умолчанию для исполняемого файла. Дополнительные сведения см. в разделе Размер стека потоков.
[in] lpStartAddress
Указатель на определяемую приложением функцию, выполняемую оптоволокном, и представляет начальный адрес волокна. Выполнение только что созданного волокна не начинается до тех пор, пока другое волокно не вызовет функцию SwitchToFiber с этим адресом. Дополнительные сведения о функции обратного вызова fibre см. в разделе FibreProc.
[in, optional] lpParameter
Указатель на переменную, передаваемую волокну. Волокно может получить эти данные с помощью макроса GetFiberData .
Возвращаемое значение
Если функция выполнена успешно, возвращаемым значением будет адрес волокна.
Если функция завершается сбоем, возвращается значение NULL. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Количество волокон, которые может создать процесс, ограничено доступной виртуальной памятью. Например, если создать каждое волокно с 1 мегабайтом зарезервированного пространства стека, можно создать не более 2028 волокон. Если уменьшить размер стека по умолчанию с помощью инструкции STACKSIZE в файле определения модуля (DEF) или с помощью CreateFiberEx, можно создать больше волокон. Однако приложение будет иметь более высокую производительность, если вы используете альтернативную стратегию обработки запросов вместо создания такого большого количества волокон.
Прежде чем поток сможет запланировать волокно с помощью функции SwitchToFiber , он должен вызвать функцию ConvertThreadToFiber , чтобы с потоком было связано волокно.
Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0400 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.
Примеры
Пример см. в разделе Использование волокон.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |