Контрольная работа: Особливості багатозадачності в середовищі Windows
DWORD dw = WaitForSingleObject(CritMutex,INFINITE);
if(dw == WAIT_OBJECT_0)
{ // Якщо об'єкт звільнений коректно, те
// виконання коду в захищеному розділі.
for(int i = 0;i<1000;i++)
{
j = mas[i];
}
// Вихід із захищеного розділу:
// звільняємо об'єкт для доступу
// до захищеного розділу інших задач.
ReleaseMutex(CritMutex);
}
return 0;
}
Лістинг 3. Зняття графічного потоку
void breakTask(GF_Task* tsk)
{
DWORD result;
char s[512];
// Команда задачі, що знімається, на зняття.
tsk->putState(tsBreak,True);
// Чекаємо завершення потоку протягом 1 с.
WaitForSingleObject(tsk->TaskHnd95,1000);
//
// Аналіз відповіді.
//
if(result == WAIT_OBJECT_0) // Ok - потік довершений успішно.
{