Лабораторні роботи WinApi
Лабораторна робота №7
Лабораторна робота №7 "Процеси та потоки"
Взаємодія між процесами.
Розподіл даних між процесами.
Робота з файлами які відображаються у пам'ять.
Необходимо написать две программы, которые будут иметь общие данные.
Существует несколько механизмов реализации общего доступа к данным разных процессов.
Воспользуемся одним из них, наиболее удобным – проецированием файла в память.
Одна программа будет сортировать данные в файле, а другая отображать содержимое этого файла. Работать оба процесса будут одновременно.
Создайте файл data.dat. В нем записаны числа, сгенерированные случайным образом. Количество чисел – 20-30 штук. Диапазон значений:от 10 до 100. (Это именно числа, а не символьные строки хранящие ASCII коды цифр!!!)
Программа №1. «Сортировка данных»
- Берем за основу программу лаб.раб №4.
- Включаем обработку события нажатия клавиши, и отслеживаем в нем нажатие пробела. Если пользователь нажал пробел, значит начинаем сортировку данных.
- Выполняем проецирование файла в память. Используем для этого созданный файл data.dat. В результате получим доступ к данным как к обычному одномерному массиву.
- Выполняем сортировку массива, любым из методов сортировки. Вставьте 1-но секундную задержку для каждой итерации сортировки массива, это позволит потом наглядней увидеть процесс сортировки.
- По окончанию сортировки, программа выводит в окно, строку «Работа завершена».
Программа №1. «Вывод файла данных в окно»
- Берем за основу программу лаб.раб №4.
- Выполняем проецирование файла в память. Используем для этого созданный файл data.dat. В результате получим доступ к данным как к обычному одномерному массиву. Этот же файл проецирует в память предыдущая программа.
- Создаем таймер на 0.5 секунды. При получении сообщения от таймера, выполняем вывод всего массива в окно. Предусмотрите корректный перевывод данных в окно, без наложений. В окно выводим не числа из массива, а строки одного и того же символа, например «*», в количестве равном числу из массива.
Запускаем на выполнение обе программы одновременно. Когда вторая программа запустилась и выполняет вывод данных в окно (выводит пока одну и туже картинку каждые пол секунды), нажимаем пробел в первой программе и она начинает сортировать массив. При этом, так как они данные берут из одного и того же файла (обе проецировали его себе в память), то первая вносит изменения переставляя данные при сортировке, а вторая выводит из себе в окно и мы видим ход процесса сортировки. Временную задержку в первой программе можно при надобности увеличить.
Эти две программы демонстрируют возможность организации общего доступа процессов к одним и тем же данным. Так же демонстрируется механизм проецирования файла в память, как один из наилучших методов доступа к файлу.
Задание рассчитано на 2 лабораторных занятия. (4 недели).
Теория по проецированию файлов в методичке (часть 3).