Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpora_po_sp.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
308.78 Кб
Скачать

49) Работа с каталогами (папками) в Windows

Для создания каталога используется функция CreateDirectory, которая имеет следующий прототип:

BOOL CreateDirectory(

LPCTSTR lpPathName, // имя каталога

LPSECUTITY_ATTRIBUTES IpSecurutyAttributes // атрибуты защиты

В случае успешного завершения функция возвращает ненулевое значение, а в случае неудачи — false. В параметре lpPathName задается указатель на символьную строку, которая содержит имя создаваемого каталога, а параметр IpSecurutyAttributes задает атрибуты безопасности этого каталога. После создания каталога можно получить его дескриптор, используя для этого функцию CreateFile С установленным флагом FILE_FLAG_BACKUP_SEMANTICS.

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

Поиск файлов в каталоге. Для поиска файлов, находящихся в каталоге, используются функции FindFirstFile И FindNextFile. Причем функция FindFirstFile Находит первый файл, имя которого удовлетворяет образцу поиска, а функция FindNextFile находит последующие такие файлы.

Удаление каталога . Для удаления пустого каталога Предназначена функция RemoveDdirectory, которая имеет следующий прототип:

BOOL RemoveDirectory (

LPCTSTR lpPathName // имя каталога);

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

50) Усовершенствованные методы синхронизации потоков

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

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

Если оператор await имеет вид:

await(TRUE) действие; то происходит безусловное выполнение непрерывного действия. Этот случай называется взаимным исключением, а программный код, исполняемый внутри непрерывного действия, называется критической секцией.

В операционных системах Windows объектами синхронизации называются объекты ядра, которые могут находиться в одном из двух состояний: сигнальном (signaled) и несигнальном (nonsignaled). Объекты синхронизации могут быть разбиты на четыре класса.

К первому классу относятся собственно объекты синхронизации, т. е. те, которые служат только для решения задач синхронизации параллельных потоков. К таким объектам синхронизации в Windows относятся:

□ мьютекс (mutex);

□ событие (event);

□ семафор (semaphore).

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

К третьему классу синхронизации относятся объекты, которые переходят в сигнальное состояние по завершении своей работы:

К четвертому классу относятся объекты синхронизации, которые переходят в сигнальное состояние после получения сообщения об изменении содержимого объекта. К ним относятся:

□ изменение состояния каталога (change notification);

□ консольный ввод (console input).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]