Работа №8. отображаемые файлы

Работа №5. Запуск потоков функциями API

Разработать приложение, производящее вызов функций из трех различных плагинов одновременно в трех отдельных потоках. Эти три потока должны иметь одинаковый (общий) код, и запускаться функциями API CreateThread. Дополнительный параметр, передаваемый в эту функцию при создании потока, должен определять какой плагин будет вызываться в каждом из трех потоков.

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

В функции плагинов передавать случайные или любые постоянные параметры.

Работа №6. Использование объектов синхронизации

Разработать приложение, в котором выполняется следующий алгоритм: два параллельных потока циклически выполняют вызов плагинов из библиотек dll (согласно варианта). Каждый поток использует свой плагин. Результаты работы каждый поток помещает в общую очередь конечной длины. Третий поток забирает из очереди результаты работы плагинов и отображает их на экране в произвольной форме. Схема взаимодействия потоков приведена на рисунке:

Очередь должна быть реализована с использованием двух объектов синхронизации Семафор (для потоков 1 и 2, и для потока 3). При заполнении очереди потоки 1 и 2 должны приостанавливаться функцией ожидания. При отсутствии результатов в очереди поток 3 также должен приостанавливаться функцией ожидания. Участок кода помещения результатов в очередь должен быть оформлен с использованием объекта синхронизации Критическая секция.

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

Работа №7. Работа с файлами и временем функциями API

Модифицировать приложение их работы №1 следующим образом:

— в заголовке окна через отдельный поток должны отображаться текущее значение системного времени OC Windows и серийный номер диска, на котором установлена ОС;

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

— работа с этим текстовый файлом должна осуществляться с использованием только функций API;

— этот текстовый файл должен размещаться в папке, предназначенной для хранения временных файлов;

— в окне приложения разместить текстовый список (ListBox, Memo или StringGrid), содержащий список имён файлов и их размеров, которые содержатся в папке для хранения временных файлов, поиск файлов для этого списка должен быть реализован с использованием API функций FindFirstFile, FindNextFile, FindClose;

— этот список должен обновляться автоматически, отслеживая изменение состава файлов в папке и изменения размеров файлов;

— отслеживание изменений должно быть реализовано с использованием функций Find(First/Next/Close)ChangeNotification или ReadDirectoryChangesW.

Работа №8. Отображаемые файлы

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

Алгоритм работы приложений:

— запустить первое приложение, которое переходит в режим ожидания (первое приложение может быть как консольным, так с графическим интерфейсом или вообще без окна);

— запустить второе приложение, которое запрашивает ввод данных;

— после ввода данные помещаются в общую область памяти, и первое приложение выполняет их обработку любым (одним) произвольным плагином из первой работы;

— результат обработки первым приложением также помещается в общую область памяти;

— второе приложение дожидается обработки данных и отображает результат, переходя затем опять в режим ввода новых данных;

— процесс обработки данных может повторяться произвольное число раз до завершения второго приложения;

— по завершении второго приложения, первое должно автоматически завершаться.

Синхронизацию между приложениями осуществлять через использование объектов синхронизации с именами (например, событий). Реализация работы должна позволять запускать произвольное число копий второго приложения. При этом вводить данные должно быть можно с любой копии, а результат обработки должен автоматически отображаться во всех запущенных копиях второго приложения (использовать PulseEvent).

Также во втором приложении разместить кнопку, в которой осуществить вызов любой произвольной функции API c ошибкой и отобразить текстовое описание данной ошибки с использованием функции FormatMessage. Выбор комбинации функции API и ошибки должен быть уникальным – не присутствовать в работах, сданных другими студентами.

Как очистить память телефона или планшета на Android от ненужных файлов и программ 📱❌📝


Похожие статьи.

Понравилась статья? Поделиться с друзьями: