Операционные системы. Кручинин А.Ю. - 53 стр.

UptoLike

Составители: 

53
#include "windows.h"
#include "iostream.h"
void main()
{
HANDLE mut;
mut = CreateMutex(NULL, FALSE, "MMM");
DWORD result;
result = WaitForSingleObject(mut,0);
if (result == WAIT_OBJECT_0)
{
cout << "programm running" << endl;
int i;
cin >> i;
ReleaseMutex(mut);
}
else
cout << "fail programm running" << endl;
CloseHandle(mut);
}
Листинг 18 Пример использования мьютекса
Задание:
1. Написать программы с требованиями:
может запуститься только один экземпляр приложения, для определения
запущено приложение или нет использовать мьютекс (проверка, не создан ли
мьютекс предыдущим экземпляром);
запускаются два экземпляра программы, при нажатии на кнопку первого
экземпляра эмулируется захват ресурса и устанавливается мьютекс, второй
экземпляр, при нажатии на кнопку ожидает с использованием функции
WaitForMultipleObjects освобождение ресурса в течении 3 секунд и, если ресурс
освобождается, то он захватывается 2-ым экземпляром, в противном случае
выводится на экран невозможность захвата ресурса;
может запуститься только 4 экземпляра одного приложения, реализация с
использованием семафора.
Контрольные вопросы:
1. Для чего нужны объекты синхронизации?
2. Чем отличается мьютекс от семафора?
3. Как работает функция CreateSemaphore?
4. Для чего нужны функции ожидания?
5. Чем отличаются функции WaitForSingleObject и WaitForMultipleObjects?
Для самостоятельного изучения:
1. Функции OpenMutex, OpenSemaphore, WaitForMultipleObjects.
2. Объекты событий.
3. Таймеры ожидания.
#include "windows.h"
#include "iostream.h"

void main()
{
      HANDLE mut;
      mut = CreateMutex(NULL, FALSE, "MMM");
      DWORD result;
      result = WaitForSingleObject(mut,0);
      if (result == WAIT_OBJECT_0)
      {
              cout << "programm running" << endl;
              int i;
              cin >> i;
              ReleaseMutex(mut);
      }
      else
              cout << "fail programm running" << endl;
      CloseHandle(mut);
}
                        Листинг 18 – Пример использования мьютекса

Задание:
1. Написать программы с требованиями:
      – может запуститься только один экземпляр приложения, для определения
запущено приложение или нет использовать мьютекс (проверка, не создан ли
мьютекс предыдущим экземпляром);
      – запускаются два экземпляра программы, при нажатии на кнопку первого
экземпляра эмулируется захват ресурса и устанавливается мьютекс, второй
экземпляр, при нажатии на кнопку ожидает с использованием функции
WaitForMultipleObjects освобождение ресурса в течении 3 секунд и, если ресурс
освобождается, то он захватывается 2-ым экземпляром, в противном случае
выводится на экран невозможность захвата ресурса;
      – может запуститься только 4 экземпляра одного приложения, реализация с
использованием семафора.

Контрольные вопросы:
1. Для чего нужны объекты синхронизации?
2. Чем отличается мьютекс от семафора?
3. Как работает функция CreateSemaphore?
4. Для чего нужны функции ожидания?
5. Чем отличаются функции WaitForSingleObject и WaitForMultipleObjects?

Для самостоятельного изучения:
1. Функции OpenMutex, OpenSemaphore, WaitForMultipleObjects.
2. Объекты событий.
3. Таймеры ожидания.
                                                                          53