Функция CreateFiber


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

Чтобы задать и фиксированный и резервный размер стека, используйте функцию CreateFiberEx.

Синтаксис

LPVOID CreateFiber(

SIZE_T 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

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz