Лабораторная работа: Процессы и потоки
Міністерство освіти і науки України
Житомирський державний технологічний університет
ФІКТ
Кафедра ПЗОТ
Група ПІ-39
Лабораторная робота №8
по курсу
Системное программирование
на тему
Процессы и потоки
г. Житомир
2011 р.
Задание
Необходимо написать две программы, которые будут иметь общие данные.
Существует несколько механизмов реализации общего доступа к данным разных процессов. Воспользуемся одним из них, наиболее удобным – проецированием файла в память. Одна программа будет сортировать данные в файле, а другая отображать содержимое этого файла. Работать оба процесса будут одновременно.
программа массив процесс
Ход работы
Создайте файл 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 секунды. При получении сообщения от таймера, выполняем вывод всего массива в окно. Предусмотрите корректный перевывод данных в окно, без наложений. В окно выводим не числа из массива, а строки одного и того же символа, например «*», в количестве равном числу из массива.
Запускаем на выполнение обе программы одновременно. Когда вторая программа запустилась и выполняет вывод данных в окно (выводит пока одну и туже картинку каждые пол секунды), нажимаем пробел в первой программе и она начинает сортировать массив. При этом, так как они данные берут из одного и того же файла (обе проецировали его себе в память), то первая вносит изменения переставляя данные при сортировке, а вторая выводит из себе в окно и мы видим ход процесса сортировки. Временную задержку в первой программе можно при надобности увеличить.
Эти две программы демонстрируют возможность организации общего доступа процессов к одним и тем же данным. Так же демонстрируется механизм проецирования файла в память, как один из наилучших методов доступа к файлу.
Код програм мы
Програма №1
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
HANDLE FileMappingHandle, FileHandle, MutexHandle;
HINSTANCE exec;
int* Image;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static char szAppName[] = "FileImageViewer" ;
HWND hwnd ;
MSG msg ;
WNDCLASSEX wndclass ;
--> ЧИТАТЬ ПОЛНОСТЬЮ <--