Создание многопоточных приложений. Копытин А.В - 12 стр.

UptoLike

Составители: 

12
который при объединении с относительным приоритетом
tpTimeCritical имеет значение общего приоритета , равное 31.
Задания
Создать поток и выполнить в нем следующие действия. В программе долж -
на быть предусмотрена возможность приостановить , возобновить и прекра-
тить выполняемые действия. Поток должен передавать главному процессу
свой статус, т.е. что он делает в данный момент и каков процент выполнения.
Действия:
1. Произвести поиск заданного файла на заданном диске по имени .
2. Произвести поиск подстроки в тексте (файле ).
3. Произвести подсчет занимаемого файлового пространства указанного ката -
лога, включая подкаталоги.
4. Выполнить сравнение двух указанных файлов. Результаты сравнения сохра-
нить в заданный файл.
5. Выполнить установку атрибутов файлов, включая подкаталоги.
6. Произвести сканирование списка процессов с выводом загруженных моду-
лей (Process32First, Process32Next, CreateToolhelp32Snapshot).
7. Произвести сканирование списка потоков с выводом родительских процес-
сов (Thread32First, Thread32Next, CreateToolhelp32Snapshot).
8. Произвести сканирование сети : домен, компьютеры (WNetEnumResource).
9. Шифрование каталога, т.е. всех файлов в этом каталоге и подкататалогов.
10. Форматирование текстовых файлов(*.txt) в определенном каталоге. Фор-
матирование заключается в следующем:
1) Все строки текста устанавливаются определенной длины . Если в строке
символов больше, то они переносятся на следующую строку.
2) Если перед редактируемой строкой имеется пустая строка, то текущая
строка считается началом абзаца и начинается с отступа.
Управление несколькими потоками
Как уже отмечалось, несмотря на то , что с помощью потоков можно решить
множество проблем программирования, они приносят с собой новые типы про -
блем, с которыми приходится сталкиваться в приложениях . Чаще всего эти но -
вые проблемы связаны с доступом со стороны нескольких потоков к таким гло -
бальным ресурсам , как глобальные переменные или дескрипторы . Кроме того ,
проблемы могут возникнуть в случае, когда, например, нужно обеспечить по -
стоянное возникновение некоторого события в одном потоке перед или после
некоторого другого события во втором потоке. В этом разделе вы узнаете , как
решить эти проблемы , используя средства, предоставленные в Delphi.
Хранение локальных данных потоков
Поскольку каждый поток представляет отдельный путь выполнения прило -
жения внутри процесса, было бы логично предположить , что на определенном
этапе потребуется средство хранения данных, связанных с каждым потоком.
Существует три метода хранения данных, уникальных для каждого потока.
                                         12
ко торы й    при  о бъ единении    с о тно сительны м                  прио ритетом
tpTimeCritical имеетзначение о бщ его прио ритета, равно е31.

Задан и я
   С о здатьпо ток и вы по лнитьв нем следую щ ие действия. В про грамме до лж -
на бы ть предусмо трена во змо ж но сть прио стано вить, во зо бно вить и прекра-
тить вы по лняемы е действия. П о ток до лж ен передавать главно му про цессу
сво й статус, т.е. что о н делаетвданны й мо менти како впро центвы по лнения.
   Д ействия:
1. П ро извести по иск заданно го файланазаданно м дискепо имени.
2. П ро извести по иск по дстро ки втексте(файле).
3. П ро извести по дсчетзанимаемо го файло во го про странства указанно го ката-
ло га, вклю чая по дкатало ги.
4. В ы по лнить сравнение двух указанны х файло в. Результаты сравнения со х ра-
нитьвзаданны й файл.
5. В ы по лнитьустано вкуатрибутовфайло в, вклю чая по дкатало ги.
6. П ро извести сканиро вание списка про цессо в с вы во до м загруж енны х мо ду-
лей (Process32First, Process32Next, CreateToolhelp32Snapshot).
7. П ро извести сканиро вание списка по токо в с вы во до м ро дительских про цес-
со в(Thread32First, Thread32Next, CreateToolhelp32Snapshot).
8. П ро извести сканиро ваниесети:до мен, ко мпью теры (WNetEnumResource).
9. Ш ифро ваниекатало га, т.е. всех файло ввэтом катало геи по дкататало го в.
10. Ф о рматиро вание текстовы х файло в(*.txt) в о пределенно м катало ге. Ф о р-
матиро ваниезаклю чается вследую щ ем:
      1) В се стро ки текста устанавливаю тся о пределенно й длины . Е сли в стро ке
      симво ло вбо льш е, то о ни перено сятся наследую щ ую стро ку.
      2) Е сли перед редактируемо й стро ко й имеется пустая стро ка, то текущ ая
      стро касчитается начало м абзацаи начинается со тступа.
У п равлен и е н ес кольки м и п от окам и
   К ак уж е о тмечало сь, несмо тря на то, что с по мо щ ью по токо в мо ж но реш ить
мно ж ество про блем про граммиро вания, о ни прино сятссо бо й но вы е типы про -
блем, с ко торы ми прих о дится сталкиваться в прило ж ениях . Ч ащ е всего эти но -
вы е про блемы связаны сдо ступо м со сторо ны неско льких по токо вк таким гло -
бальны м ресурсам, как гло бальны е переменны е или дескрипторы . Кро ме того ,
про блемы мо гутво зникнуть в случае, ко гда, например, нуж но о беспечить по -
стоянно е во зникно вение неко торо го со бы тия в о дно м по токе перед или по сле
неко торо го друго го со бы тия во второ м по токе. В этом разделе вы узнаете, как
реш итьэти про блемы , испо льзуя средства, предо ставленны е вDelphi.

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