Организация параллельных потоков. Часть 2 | страница 13
Рис. 4.5. Параллельный цикл
В нашей программе все параллельные потоки будут работать с одной общей переменной S. Для последовательной программы это не представляет каких-то проблем.
Запускаем командное окно и переходим в каталог с исполняемым файлом.
Задаём выполнение в один поток:
set OMP_NUM_THREADS=1.
Запускаем программу несколько раз (рис. 4.6).
Видим, что результат каждый раз получается правильный. Он соответствует количеству итераций цикла, заданному в нашей программе.
Рис. 4.6. Запуск одного потока
Задание. Создайте программу (рис. 4.5) и запустите её несколько раз. Обратите внимание на полученные результаты.
Попробуем запускать программу несколько раз, не загромождая экран лишним текстом. Для этого создадим пакетный файл (рис. 4.7).
Напомним, что пакетный файл — это текстовый файл, в котором вызываются команды операционной системы. То, что мы обычно набираем в командной строке вручную. Здесь также можно использовать дополнительные команды, напоминающие привычный язык программирования.
В первой строчке пакетного файла мы отключаем вывод на экран вводимой команды:
@echo off.
В следующих строчках мы несколько раз запускаем нашу программу на выполнение. Расширение имени файла EXE не указываем.
Сохраняем файл в каталоге Release — там же, где находится наш исполняемый файл. Указываем имя файла 08 и расширение имени CMD. Это сокращение от слова COMMAND. Можно также использовать традиционное расширение BAT — от слова BATCH — «пакетный файл».
Рис. 4.7. Пакетный файл
Задание. Создайте пакетный файл (рис. 4.7).
Возвращаемся в командное окно. Переходим в каталог Release нашего текущего проекта (рис. 4.8). Вводим команду dir. Убеждаемся, что в текущем каталоге появился пакетный файл 08.cmd. Здесь же видим нас исполняемый файл с расширением EXE.
Рис. 4.8. Каталог Release
Запускаем наш пакетный файл. Вводим название файла, не указывая его расширение:
08.
Программа запускалась десять раз. Во всех случаях ответ правильный (рис. 4.9).
Рис. 4.9. Пакетный запуск программы
Задание. Запустите пакетный файл и изучите полученные результаты.
Мы создали первый пакетный файл и ввели нашу команду несколько раз. В пакетном файле можно организовать цикл. Традиционный цикл FOR со счётчиком. Тогда файл получается покороче и попроще.
Первая строчка отменяет вывод выполняемых команд на экран — как в предыдущем примере:
@echo off.
Вторая строчка — цикл FOR.
Имя счётчика цикла в пакетном файле начинается с двух символов процента: