Контрольная работа: Особливості багатозадачності в середовищі Windows
// Инициализируем семафор поділюваного коду.
CritMutex = SectCreateMutex(NULL,FALSE,NULL);
... // Текст програми.
// Закриваємо об'єкт доступу до поділюваного коду.
CloseHandle(CritMutex);
}
// Перший потік: запис у масив даних.
DWORD thread1(LPVOID par)
{ // Запис значень у масив.
// Запит на вхід у захищений розділ.
DWORD dw = WaitForSingleObject(CritMutex,INFINITE);
if(dw == WAIT_OBJECT_0)
{ // Якщо об'єкт звільнений коректно, те
// виконання коду в захищеному розділі.
for(int i = 0;i<1000;i++)
{
mas[i] = i;
}
// Вихід із захищеного розділу:
// звільняємо об'єкт для доступу
// до захищеного розділу інших задач.
ReleaseMutex(CritMutex);
}
return 0;
}
// Другий потік: зчитування даних з масиву.
DWORD thread2(LPVOID par)
{ // Зчитування значень з масиву.
int j;