Реферат: Процессы, нити и волокна в ОС Windows
ZeroMemory (&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory (&pi, sizeof(pi));
if (! CreateProcess(NULL, «c:\\windows\\calc.exe», NULL, NULL, FALSE,
0, NULL, NULL, &si, &pi))
return 0;
// Close process and thread handles.
CloseHandle (pi.hProcess);
CloseHandle (pi.hThread);
return 0;
}
4. Создание нитей
Первичная нить создается автоматически при создании процесса. Остальные нити создаются функциями CreateThread и CreateRemoteThread (только в WinNT/2000/XP/Vista).
5. Завершение нитей
Нить завершается если
– Функция нити возвращает управление.
– Нить самоуничтожается, вызвав ExitThread .
– Другая нить данного или стороннего процесса вызывает TerminateThread .
– Завершается процесс, содержащий данную нить.
6. Создание волокон
Волокно может быть создано с помощью системного вызова CreateFiber из основной нити процесса или получено путем преобразования текущей нити с помощью функции ConvertThreadToFiber . Переключение между волокнами может быть организовано с помощью функции SwitchToFiber , но ее вызов можно осуществлять только из волокна.
Пример: Программа создает 4 волокна, каждое из которых выполняет переключение на следующее волокно, если число переключений больше 10, работа завершается.
#define WIN32_LEAN_AND_MEAN
#define _WIN32_WINNT 0x0400
#include «stdio.h»
#include «windows.h»
int Counter;
void *fiber[5];
void WINAPI Func (void *)