Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2020ModelprogramowaniawielowątkowegouniwersalnychaplikacjiWindows
39
implementacjiaplikacjijejkodźródłowyjestkompilowanywosobnymwątku,dzięki
czemuśrodowiskoprogramistycznenabieżącoinformujeprogramistęoewentual-
nychbłędachwskładni.
InterfejsprogramistycznyuniwersalnejplatformyWindowsudostępniawiele
asynchronicznychmetod,któredziałająwosobnychwątkach,abynieblokowaćUI
aplikacji.Przykłademtakiejfunkcjijestchociażbywykorzystywanawpoprzednim
rozdzialemetoda
ShowAsync
klasy
MessageDialog
.Nazwymetodasynchronicznych
majązazwyczajprzyrostek
Async
,abyjawniewskazać,żewykonywanewsposób
asynchroniczny.Programowanieasynchroniczneiwielowątkowejestkluczowym
zagadnieniempodczasprogramowaniauniwersalnychaplikacjidlaWindows.
Wątki,opróczoczywistychzalet,mogąrównieżprzysporzyćdodatkowychproble-
mów,niespotykanychwaplikacjachjednowątkowych.Dotycząonegłówniedostępu
dozasobówwspółdzielonychprzezróżnewątki.Ztakimproblememmożnasię
najczęściejzetknąćpodczaspróbyaktualizacjiinterfejsuużytkownikazpoziomume-
todywątkuroboczego.Dodatkowetrudnościdefniowanejakozjawiskowyścigu
(racecondition)izakleszczenia(deadlock).Pierwszeznichoznacza,żedziałanie
aplikacjizależyodtego,któryzwątkówwykorzystującychwspółdzielonezasoby
wykonaswojąpracęjakopierwszy.Natomiastzakleszczeniewątkówpoleganatym,
żedziałaniejednegozconajmniejdwóchwątkówzależyodwynikupracyinnego
wątkuzależnego,któryzdążyłjużwykonaćswojąfunkcję.Wefekcieprowadzito
dozablokowaniaaplikacji,ponieważpierwszywątekniezostałpoinformowany
ozakończeniupracyinnegowątku.
Wtymrozdzialezostanąprzedstawionepodstawowezagadnieniadotyczące
programowaniaasynchronicznegoaplikacjidlauniwersalnejplatformyWindows.
Opisrozpoczynakrótkieomówieniemodeluprogramowaniawielowątkowegodla
UWP
.Następniezaprezentowanebędąsposobytworzeniawątkówzużyciemklasy
Task,dostępdoelementówUIzpoziomuwątkówroboczych,kontekstsynchroni-
zacji,słowakluczowe
async
oraz
await
,pulawątków,wbudowanemechanizmy
zrównoleglaniakodu,atakżemetodysynchronizacjidziałaniawątków.
2|2|Modelprogramowaniawielowątkowego
uniwersalnychaplikacjiWindows
Wsytuacji,gdydoprogramowaniauniwersalnychaplikacjidlaplatformyWindows
wykorzystujesięinterfejsprogramistycznyopartynaplatformie.NET,towramach
procesówsystemowychtworzonetakzwanewątkizarządzane,którychabstrak-
cyjnąreprezentacjęstanowiklasa
Task
.ŚrodowiskouruchomienioweCLR(Common
LanguageRuntime)bibliotek.NETzarządzawówczastworzeniem,wykonaniem
orazzamykaniem(kończeniempracy)tychwątkówi,cozatymidzie,zwalnianiem
odpowiednichzasobówrezerwowanychnapotrzebyichwykonania.
CLRkontrolujewyłączniewątkizarządzane.Wszelkieproceduryuruchamiane
wramachwątkówsystemowych(wątkówniezarządzanych),któremogąbyćtworzone