Функция
CreateFiberФункция
CreateFiber назначает объект нити, определяет ее стек и подготавливает выполнение, которое начинается с определенного начального адреса, обычно с функции нити. Эта функция не устанавливает очередность обслуживания нити.Чтобы задать и фиксированный и резервный размер стека, используйте функцию
CreateFiberEx.Синтаксис
LPVOID CreateFiber( dwStackSize, // начальный размер стека LPFIBER_START_ROUTINE lpStartAddress, // функция нити LPVOID lpParameter // аргумент нити ); |
Параметры
dwStackSize
[in] Начальный фиксированный размер, в байтах, стека нити. Функция терпит неудачу, если она не сможет зафиксировать байты параметра
dwStackSize. Значение по умолчанию зарезервированного размера стека - 1 мегабайт. Для получения дополнительной информации, см. Замечания.lpStartAddress
[in] Указатель на определяемую приложением функцию, которая выполняется нитью и исполняет роль начального адреса нити. Выполнение недавно созданной нити не начинается до тех пор, пока другая нить не вызовет функцию
SwitchToFiber с этим адресом. Для получения дополнительной информации о функции повторного вызова нити, см. FiberProc.lpParameter
[in] Указатель на переменную, которая передается нити. Нить может извлекать эти данные при помощи использования макрокоманды
GetFiberData.Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - адрес нити.
Если функция завершается с ошибкой, величина возвращаемого значения - ПУСТО (NULL). Чтобы получить дополнительные данные об ошибках, вызовите
GetLastError.Замечания
Число нитей, которые может создать процесс, ограничено доступной виртуальной памятью. По умолчанию, каждая нить имеет 1 мегабайт зарезервированного пространства стека. По этой причине Вы можете создавать, самое большее, 2028 потоков. Если Вы преобразовываете заданный по умолчанию размер стека при помощи использования инструкции
STACKSIZE в файле определения модуля (.DEF) или функции CreateFiberEx, Вы можете создать большее количество нитей. Однако, ваше приложение будет иметь лучшую производительность, если Вы используете дополнительный прием для обработки запросов.Прежде, чем поток может установить очередность обслуживания нити, используя функцию
SwitchToFiber, он должен вызвать функцию ConvertThreadToFiber, так как имеемая нить, связанна с потоком.Чтобы компилировать приложение, которое использует эту функцию, определите макрокоманду
_WIN32_WINNT как 0x0400 или позже. Для получения дополнительной информации, см. статью Использование заголовков SDK.Смотри также
Краткий обзор Процессы и потоки, Функции, используемые процессами и потоками, ConvertThreadToFiber, FiberProc, GetFiberData, SwitchToFiber
Размещение и совместимость CreateFiber |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 3.51 SP3 и старше |
Windows Me |
Да |
Windows 98 |
Да |
Windows 95 |
Нет |
Используемая библиотека |
Kernel32.lib |
Заголовочный файл |
|
- объявлено в |
Winbase.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |