Научно-исследовательская лаборатория систем ЧПУ
Научно-исследовательская лаборатория систем ЧПУ

Поиск по сайту:
 

Расписание курсов "Программирование SINUMERIK 810D/840D/840Di"



Контрольные работы по курсу ПО систем управления

Реализация синхронизации двух потоков с использованием Семафора
Пример реализации алгоритма на языке Visual C++ 6.0.

Автор: Лантвойт О. В.
Кафедра КСУ, МГТУ "СТАНКИН"

Опубликовано: 19.01.2005
Версия текста: 1.0
Скачать исходные коды примера для VC++ 6.0 размер файла: 16.4 Kб

Постановка задачи.

Необходимо реализовать синхронизацию двух потоков, которые инициализируют массив целых чисел. Этот массив будет разделяемым ресурсом. В качестве средства синхронизации нужно использовать симафор.

Решение поставленной задачи.

Для демонстрации работы семафора используем в качестве потоков, зависящие от времени потоки. Пусть это будет гонка двух потоков, скорость выполнения которых будет зависеть от задержки, генерируемой случайным образом. Для удобства демонстрации примем предел одной задержки равный 1 секунде, а количество задержек равным 10. В качестве разделяемого ресурса используем массив двадцати целых чисел.

Графическое решение задачи.


Реализация на С++. Листинг программы.

Поток №1.
Поток №2

Из листингов потоков видно, что скорость их выполнения зависит от времени. Далее представлено основное тело программы, в котором организована синхронизация потоков с использованием Семафора.

Основной текст программы

Результат возможной работы программы



Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.