Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания для контрольной по ОСиУБД (весенний сем...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
73.22 Кб
Скачать

Вариант 5

Средствами Windows создать и запустить 3 потока (функция CreateThread), первый из которых периодически считывает текстовую информацию из заранее подготовленного текстового буфера (массив с элементами типа char, реализованный в виде проекции файла) и отображает еѐ на форме (с помощью системных функций передачи сообщений).

Второй поток постоянно (в фоновом режиме) сканирует содержимое буфера и производит замену всех букв “а” на буквы “б”.

Третий поток постоянно (в фоновом режиме) сканирует содержимое буфера и производит замену всех букв “б” на буквы “а”.

Для синхронизации потоков при доступе к буферу памяти использовать семафоры. Для создания семафора использовать функцию CreateSemaphore. Для управления занятостью ресурса поток должен вызывать функцию ReleaseSemaphore. Для обеспечения доступа потока к разделяемому ресурсу необходимо использовать функцию ожидания освобождения ресурса WaitForSingleObject.

Предусмотреть возможность изменение приоритета каждого потока (функции GetThreadPriority и SetThreadPriority), приостановки потока (функция SuspendThread) и принудительного завершения потока (функция TerminateThread). -------------------------------------------------------------------------------------------------------------------------------------

Вариант 6

Средствами Windows создать и запустить 3 потока (функция CreateThread), первый из которых периодически считывает текстовую информацию из заранее подготовленного текстового буфера (массив с элементами типа char, реализованный в виде проекции файла) и отображает еѐ на форме (с помощью системных функций передачи сообщений).

Второй поток постоянно (в фоновом режиме) сканирует содержимое буфера и производит замену всех букв “а” на буквы “б”.

Третий поток постоянно (в фоновом режиме) сканирует содержимое буфера и производит замену всех букв “б” на буквы “а”.

Для синхронизации потоков при доступе к буферу памяти использовать мьютексы. Для создания мьютекса использовать функцию CreateMutex. Для управления занятостью ресурса поток должен вызывать функцию ReleaseMutex. Для обеспечения доступа потока к разделяемому ресурсу необходимо использовать функцию ожидания освобождения ресурса WaitForSingleObject.

Предусмотреть возможность изменение приоритета каждого потока (функции GetThreadPriority и SetThreadPriority), приостановки потока (функция SuspendThread) и принудительного завершения потока (функция TerminateThread).

При обработке ошибок там, где это возможно, использовать функции GetLastError и FormatMessage.