Sunteți pe pagina 1din 2

Programarea în Windows

Home / My courses / PWINDOWS / Capitolul 1. Concepte fundamentale. Partea 2 / Proprietățile dispecerului

Proprietățile dispecerului

Dispecerul posedă câteva proprietăți foarte importante din punctul de vedere al programării pilotate de evenimente.  Prima proprietate este aceea
că dispecerul folosește pentru comunicare mesajele. Fiecărui eveniment îi corespunde un mesaj. Atunci când are loc un eveniment, sistemul de
operare introduce în coada de evenimente a sistemului mesajul asociat, de unde ulterior va fi preluat pentru procesare. Datorită cozii de mesaje,
evenimentele pot fi livrate și atunci când dispecerul este în așteptare, cât și atunci când este ocupat procesând evenimente anterioare. Sistemul de
operare interceptează evenimentul, îl transformă în mesaj și îl plasează în coada de mesaje, dar NU așteaptă procesarea efectivă a evenimentului.
Acest tip de livrare a evenimentelor se numește *asincron* și înseamnă că producătorul de evenimente (SO Windows) este independent de
consumatorul de evenimente (aplicația). Cu alte cuvinte, aceste două activități sunt asincrone, ceea ce înseamnă că nu sunt sincronizate. Mai târziu
în această lecție veți vedea un exemplu, care va demonstra această natură asincronă a livrării evenimentelor.

A doua proprietate a dispecerului: execuția funcției DispatchMessage() trebuie să fie obligator finalizată. Doar după această se va începe “lucrul” cu
următorul eveniment. Aceasta înseamnă că dispecerul procesează evenimentele în mod atomar (Run-to-Completion, RTC) – procesarea unui
eveniment nu poate fi întreruptă și lansată procesarea altui eveniment.

Iar a treia proprietate cheie a dispecerului este că apelează codul aplicației – funcția WndProc. Aceasta diferă de programarea imperativă în care
doar aplicația putea apela funcții ale sistemului de operare. Acum și sistemul de operare apelează funcții ale aplicației.

Această ultimă proprietate duce la "inversarea controlului" în comparație cu programarea secvențială tradițională. Este o caracteristica cheie a
tuturor programelor controlate de evenimente și este esența PPE. Inversarea controlului înseamnă că evenimentele conduc aplicația și nu invers
(cum era în programarea imperativă). 

Dacă am compara cu schemele-bloc de descriere a algoritmilor, prezentându-le sub formă de graf orientat, asta ar însemna că, spre deosebire de
programarea imperativă, în care operațiile erau plasate în vârfurile grafului, iar tranzițiile erau reprezentate prin arce, aici este exact invers:
activitățile (operațiile) sunt reprezentate prin arce, iar în vârfurile grafului sunt plasate stările aplicației. Cu alte cuvinte, tranzițiile dintr-o stare în alta
sunt determinate de evenimentele importante pentru aplicație și sunt reprezentate prin arcele grafului orientat. Pe arce vor fi indicate acțiunile
asociate fiecărui eveniment. Iar vârfurile grafului conțin stările în care se poate afla aplicația.

Last modified: Monday, 4 May 2020, 12:01 AM

◄ Punctul de intrare în program - bucla


Jump to... Procedura de fereastră ►
de mesaje

You are logged in as Mihail Curchi (Log out)


PWINDOWS
Data retention summary
Get the mobile app

S-ar putea să vă placă și