Лабораторні роботи WinApi

Лабораторна робота №7

Лабораторна робота №7 "Процеси та потоки"

Взаємодія між процесами. 
Розподіл даних між процесами. 
Робота з файлами які відображаються у пам'ять.

 

Необходимо написать две программы, которые будут иметь общие данные.

Существует несколько механизмов реализации общего доступа к данным разных процессов.

Воспользуемся одним из них, наиболее удобным – проецированием файла в память.

Одна программа будет сортировать данные в файле, а другая отображать содержимое этого файла. Работать оба процесса будут одновременно.

 

Создайте файл data.dat. В нем записаны числа, сгенерированные случайным образом. Количество чисел – 20-30 штук. Диапазон значений:от 10 до 100. (Это именно числа, а не символьные строки хранящие ASCII коды цифр!!!)

 

Программа №1. «Сортировка данных»

  1. Берем за основу программу лаб.раб №4.
  2. Включаем обработку события нажатия клавиши, и отслеживаем в нем нажатие пробела. Если пользователь нажал пробел, значит начинаем сортировку данных.
  3. Выполняем проецирование файла в память. Используем для этого созданный файл data.dat. В результате получим доступ к данным как к обычному одномерному массиву.
  4. Выполняем сортировку массива, любым из методов сортировки. Вставьте 1-но секундную задержку для каждой итерации сортировки массива, это позволит потом наглядней увидеть процесс сортировки.
  5. По окончанию сортировки, программа выводит в окно, строку «Работа завершена».

 

Программа №1. «Вывод файла данных в окно»

  1. Берем за основу программу лаб.раб №4.
  2. Выполняем проецирование файла в память. Используем для этого созданный файл data.dat. В результате получим доступ к данным как к обычному одномерному массиву. Этот же файл проецирует в память предыдущая программа.
  3. Создаем таймер на 0.5 секунды. При получении сообщения от таймера, выполняем вывод всего массива в окно. Предусмотрите корректный перевывод данных в окно, без наложений. В окно выводим не числа из массива, а строки одного и того же символа, например «*», в количестве равном числу из массива.

 

Запускаем на выполнение обе программы одновременно. Когда вторая программа запустилась и выполняет вывод данных в окно (выводит пока одну и туже картинку каждые пол секунды), нажимаем пробел в первой программе и она начинает сортировать массив. При этом, так как они данные берут из одного и того же файла (обе проецировали его себе в память), то первая вносит изменения переставляя данные при сортировке, а вторая выводит из себе в окно и мы видим ход процесса сортировки. Временную задержку в первой программе можно при надобности увеличить.

 

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

 

Задание рассчитано на 2 лабораторных занятия. (4 недели).

 

Теория по проецированию файлов в методичке (часть 3).