ВУЗ:
Составители:
Рубрика:
3
Понятие о потоках
Подпроцесс, поток (thread) — это объект операционной системы , который
представляет путь выполнения программы внутри отдельного процесса. Каж -
дое приложение Win32 имеет по крайней мере один поток, часто называемый
основным, или стандартным, но приложения для выполнения других задач
вольны создавать дополнительные потоки.
С помощью потоков реализуются средства одновременного выполнения от-
дельных подпрограмм. Конечно , если компьютер оснащен только одним про -
цессором, то о настоящей одновременности работы двух потоков говорить не
приходится . Но когда для обработки каждого потока операционная система по -
очередно выделяет определенное время (измеряемое в мельчайших долях се-
кунды ), то создается впечатление одновременной работы нескольких приложе-
ний.
Практическое применение потоков
Не секрет, что потоки — серьезное подспорье для программистов Windows.
В своих приложениях вы можете создавать вторичные потоки, предназначен-
ные для выполнения некоторых фоновых работ. Обычно потоки используются
для вычислений по данным, содержащимся в ячейках электронных таблиц или
для подкачки документов текстовых процессоров при выводе на печать . И то -
гда задача разработчика — организовать необходимую обработку фоновых
процессов, обеспечив при этом наилучшее время реакции для функционирова-
ния пользовательского интерфейса.
Та часть библиотеки визуальных компонентов (VCL), которая связана с
пользовательским интерфейсом, базируется на предположении, что в любой
момент времени к ней может получить доступ только один поток, поэтому
принципиально невозможно организовать управление интерфейсом пользова-
теля со стороны нескольких потоков. VCL требует, чтобы все управление поль -
зовательским интерфейсом происходило в контексте основного потока прило -
жения (исключение составляет только поток ТCanvas).
В любом деле важно не переборщить . И особенно в случае с потоками. Не-
смотря на то , что потоки оказывают помощь в решении одних проблем, они
приносят с собой целый набор новых проблем. Предположим, например, что вы
создаете интегрированную среду разработки и хотите , чтобы компилятор рабо -
тал в своем собственном потоке, а программист мог продолжать работу с при -
ложением во время компиляции программы . Здесь могут возникнуть проблемы
вот какого плана. Что будет, если внести изменения в файл, который компили -
руется в данный момент? Можно предложить несколько вариантов решения
этой проблемы : например , создавать временную копию файла в момент его
компиляции или делать недоступными для редактирования файлы , компиляция
которых еще не завершена. Все дело в том, что потоки не являются панацеей .
Решая те или иные проблемы разработки, они неминуемо порождают новые,
чреватые появлением ошибок, которые очень трудно поддаются отладке. Раз -
работка и реализация кода, обеспечивающего устойчивую работу потоков, –
3 П он ят и е о п от оках П одпр оц ес с , пот ок (thread) — это о бъ екто перацио нно й системы , ко торы й представляетпуть вы по лнения про граммы внутри о тдельно го про ц есса. Каж - до е прило ж ение Win32 имеетпо крайней мере о дин по ток, часто назы ваемы й ос новны м , или с т андар т ны м , но прило ж ения для вы по лнения других задач во льны со здаватьдо по лнительны епо токи. С по мо щ ью по токо в реализую тся средства о дно временно го вы по лнения о т- дельны х по дпро грамм. К о нечно , если ко мпью тер о снащ ен только о дним про - цессо ро м, то о настоящ ей о дно временно сти рабо ты двух по токо в го во рить не прих о дится. Н о ко гдадля о брабо тки каж до го по токао перацио нная системапо - о чередно вы деляето пределенно е время (измеряемо е в мельчайш их до лях се- кунды ), то со здается впечатление о дно временно й рабо ты неско льких прило ж е- ний. П ракт и чес кое п ри м ен ен и е п от оков Н е секрет, что по токи — серьезно е по дспо рье для про граммистов Windows. В сво их прило ж ениях вы мо ж ете со здавать вторичны е по токи, предназначен- ны е для вы по лнения неко торы х фо но вы х рабо т. О бы чно по токи испо льзую тся для вы числений по данны м, со держ ащ имся в ячейках электро нны х таблиц или для по дкачки до кументов текстовы х про цессо ро в при вы во де на печать. И то- гда задача разрабо тчика — о рганизо вать нео бх о димую о брабо тку фо но вы х про цессо в, о беспечив при этом наилучш ее время реакц ии для функцио ниро ва- ния по льзо вательско го интерфейса. Т а часть библио теки визуальны х ко мпо нентов (VCL), ко торая связана с по льзо вательским интерфейсо м, базируется на предпо ло ж ении, что в лю бо й мо ментвремени к ней мо ж етпо лучить до ступ только о дин по ток, по этому принципиально нево змо ж но о рганизо вать управление интерфейсо м по льзо ва- теля со сторо ны неско льких по токо в. VCL требует, чтобы все управление по ль- зо вательским интерфейсо м про исх о дило в ко нтексте о сно вно го по тока прило - ж ения (исклю чениесо ставляеттолько по ток ТCanvas). В лю бо м деле важ но не перебо рщ ить. И о со бенно в случае с по токами. Н е- смо тря на то, что по токи о казы ваю тпо мо щ ь в реш ении о дних про блем, о ни прино сятссо бо й целы й набо рно вы х про блем. П редпо ло ж им, например, что вы со здаете интегриро ванную среду разрабо тки и х о тите, чтобы ко мпилятор рабо - талв сво ем со бственно м по токе, а про граммистмо г про до лж ать рабо ту с при- ло ж ением во время ко мпиляции про граммы . Здесьмо гутво зникнутьпро блемы во ткако го плана. Ч то будет, если внести изменения в файл, ко торы й ко мпили- руется в данны й мо мент? М о ж но предло ж ить неско лько вариантов реш ения этой про блемы : например, со здавать временную ко пию файла в мо ментего ко мпиляции или делатьнедо ступны ми для редактиро вания файлы , ко мпиляц ия ко торы х ещ е не заверш ена. В се дело в том, что по токи не являю тся панацеей. Реш ая те или ины е про блемы разрабо тки, о ни неминуемо по ро ж даю тно вы е, чреваты е по явлением о ш ибо к, ко торы е о чень трудно по ддаю тся о тладке. Раз- рабо тка и реализация ко да, о беспечиваю щ его устойчивую рабо ту по токо в, –