Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
40
Programowanieasynchroniczne
przezfunkcjeudostępnianeprzezinterfejsprogramistycznyUWP
,mogąwspółpra-
cowaćzoperacjamipodległymiCLRwykorzystującymiinterfejsCOM(Component
ObjectModel).Interfejstensłużydotworzeniauniwersalnychkomponentówopro-
gramowaniaimplementowanychzwykorzystaniemróżnychjęzykówinarzędzi
programistycznych.Takskonstruowanekomponentymogązesobąwspółpracować
wramachjednegolubwieluprocesówiwątków,atakżewarchitekturzerozproszonej
(DCOMDistributedCOM).
ZtegopowodumodelprogramowaniawielowątkowegoaplikacjidlaUWPjest
ściślezwiązanyztrybemdziałaniawątkówniezarządzanychwramachinterfejsu
COM.Wtechnologiitejdefniujesięspecjalnepojęcie,takzwanymodeldostępu
doobiektówCOMzpoziomuróżnychwątków(ApartmentThreadedModel,wskró-
cieATM).ObiektyCOMtworzonewramachdanegoprocesuprzydzielanedo
odpowiedniegozakresu(obszaru),którywdosłownymtłumaczeniunazywasięich
mieszkaniem(apartment).KażdyobiektCOMmożefunkcjonowaćwyłączniewjed
-
nymobszarze.Wefekcie,wyłączniewątkiutworzonewramachdanegomieszkania
(apartamentu)mająprawouzyskiwaniabezpośredniegodostępudoobiektówCOM
istniejącychwdanymapartamencie.
IstniejątrzyrodzajemodeliATM:Single-ThreadedApartment(STA),Multi-Thre-
adedApartment(MTA)orazNeutralApartment(NA).Modeleterealizująodmienny
współdzielonydostępdoobiektówCOMzpoziomuróżnychwątków.Wmodelu
STAstanwybranegoobiektuCOMmożebyćkontrolowanywyłącznieprzezjeden
wątekutworzonywramachtegosamegoapartamentu.Funkcjepozostałychwątków,
wymagającedostępudodanegoobiektuCOM,informująwątekkontrolującyjego
stanopotrzebiewykonaniaoperacjinawskazanymobiekcie.Wszystkieżądania
kolejkowaneiwykonywanesynchronicznie.Dziękitemupodstawoweproblemy
aplikacjiwielowątkowych,czylizjawiskazakleszczeniaiwyścigu,tutajniewystępują.
WmodeluMTAkilkawątkówmożekontrolowaćstanobiektuCOM.Wtakimwy-
padkuwceluimplementacjibezpieczeństwawątkówobiektyCOMmająwbudo-
wanemechanizmysynchronizacji.Neutralnymodelwspółbieżnegowykorzystania
obiektówCOMcharakteryzujesiętym,żeniewyróżniajednegolubkilkuwątków
kontrolującychstandanegoobiektu.Jedynymograniczeniemjestto,żewywołania
metodzmieniającychwłaściwościobiektówCOMmusząnastępowaćsynchronicznie.
JednakżemodelNAdotyczywyłącznieaplikacjibezgrafcznegointerfejsuużytkow-
nikaiztegopowoduniedotyczyonbezpośrednioaplikacjidlaUWP
.
Począwszyodwersji8,systemWindowswprowadzamodelprogramowania
wielowątkowegoonazwieApplicationSingle-ThreadedApartment(ASTA).Model
ASTAsłużydozarządzaniaUIaplikacji.Jegogłównymskładnikiemjestwątekinter-
fejsuużytkownika,wramachktóregotworzonewszystkieelementyUIaplikacji
UWP
.DlategoteżwaplikacjachUWPniemamożliwościtworzeniakomponentów
wizualnychwjednymwątkuiprzesyłaniaichinstancjidoinnychwątków.Natomiast
uzyskiwaniedostępudoobiektówwizualnychrealizujesięzapomocąmechanizmu
żądańwysyłanychdomodeluASTA,wktórymrolęnadzorcygraobiekt
Dispatcher
.
Tenostatnizostanieomówionydokładniejwpodrozdziale2.4.