Реферат: Процессы, нити и волокна в ОС Windows
for(;) {
printf («Fiber Number % d\n», Counter % 4);
if ((Counter++)<10) {
SwitchToFiber (fiber[Counter % 4]);
} else break;
}
}
int main (int argc, char* argv[])
{
Counter=0;
fiber[0]=CreateFiber (0, Func, NULL);
fiber[1]=CreateFiber (0, Func, NULL);
fiber[2]=CreateFiber (0, Func, NULL);
fiber[3]=CreateFiber (0, Func, NULL);
// для переключения на первое волокно необходимо преобразовать текущую нить в волокно
fiber[4]=ConvertThreadToFiber(NULL);
SwitchToFiber (fiber[0]);
return 0;
}
7. Уничтожение волокон
Для принудительного уничтожения волокна применяется функция DeleteFiber . Также для уничтожения волокна могут быть использованы все функции, предназначенные для уничтожения нитей.
8. Wait-функции
Для приостановки выполнения работы нити можно использовать различные способы.
Функция Sleep() приостанавливает работу нити на заданное число миллисекунд. Если в качестве аргумента вы укажите 0 ms, то произойдет следующее. Нить откажется от своего кванта процессорного времени, однако тут же появится в списке нитей, готовых к выполнению. Иными словами произойдет намеренное переключение нитей (вернее сказать, попытка переключения – ведь следующей для выполнения нитью вполне может стать та же самая).
Пример. Программа создает процесс «Калькулятор» и через 15 секунд его уничтожает.
#include <windows.h>
int main (int argc, char* argv[])
{
STARTUPINFO StartUpInfo;