Реферат: Эффективная многопоточность

ULONG_PTR dwData // параметр APC функции

);

Рассмотрим небольшой пример ее использования (проверка ошибок устранена для повышения наглядности).

const int _SOME_MAGIC_VALUE = 5;

DWORD CALLBACK trd1(LPVOID p)

{

HANDLE hEvent = (HANDLE)p;

SetEvent(hEvent);

int i = 0;

while(i < _SOME_MAGIC_VALUE){

SleepEx(INFINITE, true);

cout << i++ << endl;

}

return 0;

}

VOID CALLBACK APCProc(ULONG_PTR dwParam)

{

cout << "APC Proc #" << dwParam;

cout << " threadid :" << GetCurrentThreadId() << endl;

}

int main()

{

HANDLE hEvent = CreateEvent(0, false, false, NULL);

DWORD trd_id = 0;

HANDLE hThread = CreateThread(0, 0, trd1, hEvent, 0, &trd_id);

cout << "Thread id is 0x" << hex << trd_id << endl;

WaitForSingleObject(hEvent, INFINITE);

for(int i = 0;i < _SOME_MAGIC_VALUE;i++){

QueueUserAPC(APCProc, hThread, i);

К-во Просмотров: 417
Бесплатно скачать Реферат: Эффективная многопоточность