Здравствуйте. Начал изучать волокна и сразу же столкнулся с проблемой вызова функции для них. Начал с написания простенькой программы, но она не работает корректно:
| Код | #define WIN32_LEAN_AND_MEAN #define _WIN32_WINNT 0x0400 #include <stdio.h> #include <windows.h> #include <iostream> using namespace std; void *fiber[1]; int i=10; void WINAPI Func (PVOID lpParameter) { i=i+1; } int main() { fiber[0]=ConvertThreadToFiber(NULL); fiber[0]=CreateFiber (0, Func, NULL); SwitchToFiber (fiber[0]); cout << i; }
|
Всеравно продолжает выводить 10. Или нужно работать со структурами, как в найденном мною примере:
| Код | typedef struct { int counter,fiberID; LPVOID nextFiber; } *PFiberData; VOID WINAPI Executable( LPVOID lpParam ) { PFiberData pfd = (PFiberData)lpParam; pfd->counter++; cout << pfd->fiberID + 1 << " " << pfd->counter - 1 << " " <<pfd->counter << endl; SwitchToFiber(pfd->nextFiber); }
|
?
|