ВУЗ:
Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 51
- 52
- 53
- 54
- 55
- …
- следующая ›
- последняя »
