Concurenţă, multithreading şi asincronism
De stăpânit nedeterminismul este imposibil. De realizat concurenţa nu este uşor.
Susţin acest lucru ori de cîte ori am ocazia să vorbesc despre concurenţă. Mai mult decît atît, uneori chiar recomand studenţilor mei să evite utilizarea multiplelor fire de execuţie. Iar în sistemele elaborate de ei doar o reprezentare mai firească a activităţilor concurente în detrimentul eficienţei sau o concurenţă cu „suport” hardware poate justifica utilizarea lor.
Modelul actual de programare multithreading este perceput de unii ca fiind o adaptare a modelului secvenţial sistemelor concurente. Iar realizarea acestui model este de departe cea mai reuşită (shared-state concurrency model). Astfel fără o bună înţelegere a acestuia se poate defecta şi mai mult realizarea sistemului. Aici se adaugă şi faptul că testarea sistemului concurent este greu realizabilă, iar verificarea este deseori chiar imposibilă (din cauza multiplelor stări ale entităţilor concurente: state explosion).
Deci mă justific uşor dacă spun: a programa concurent înseamnă în primul rînd a înţelege fenomenul concurenţei, a cărei definiţie determină „apariţia şi gestiunea evenimentelor simultane la nivelul sistemului de calcul”. „Simultaneitatea” acestor evenimente implică independenţa reciprocă (nu acelaşi lucru pot spune obligator şi de activităţile ce le urmează). Astfel aş putea afirma că aceste „evenimente” se află într-o relaţie asincronă.
Asincronismul explicit sau implicit poate fi în unele cazuri o soluţie alternativă mai bună pentru modelele actuale concurente. Şi este regretabil faptul că unele platforme populare de programare abordează superficial asincronismul. Iar la realizarea asincronismului se face uz doar de mijloace „tradiţionale”… de multithreading.
Asta e şi nu avem ce face… până când.









Cite greutati si din cauza 'concurentei', dar acest concept eu cred ca este de baza in construirea sistemelor performante
. Adoptarea modelului secvential pentru sisteme concurente, cred ca este un pas mai usor de a intelege concurenta, dar comportamentul entitatilor secventiale este diferit si chiar in unele cazuri incompatibil cu concurenta.
Care platforme abordeaza superficial asincronismul
?
PS: Asteptam aparitia unui model concurent care ar acoperi cerintele din zilele noastre !!!
Care platforme abordeaza superficial asincronismul ?
Platformele care nu ofera mecanisme implicite pentru apeluri asincrone, dar pe care le suportă …de facto!
Interesant din ce cauza ele nu realizeaza un mecanism explicit pentru apeluri asincrone =/ , cred ca se bazeaza pe realizarile programatorilor B)
Acum încep să fiu de acord la 100 cu citatul de la începutul materialului. Doar cînd m-am ciocnit cu realizarea concurenţei, şi în special cu handling-ul erorilor şi interacţiunea firelor paralele, am înţeles că de stăpînit această concurenţă este imposibil.
Însă totuşi am un simţ că trebuie să existe un instrument, cu ajut căruia s-ar putea, măcar într-o măsură cît de mică, de a "ţine în mîini" rularea unor fire concurente.
Cît de firesc sînt tratate aceste trei notiuni de noul standard la limbajului C++ și anume C++0x pe care și cei de la Microsoft nu rămân în urmă să îl implementeaze în .NET 4.0
. De menționat că sînt introduse multe mecanisme și modelele noi, dar politica de interacțiune a proceselor concurente și formarea secțiunilor critice le lasă în seama dezvoltatorilor
.
Într-un mod sau altul evoluția științei are să ducă le determinarea modelelor concurente optime și pe înțelesul tuturor
.
Concurenţă, multithreading, asincronism, paralelism acestea fiind forme specifice de exprimare a paradigmei concurente. Unul din principiile paradigmelor de programare este, că paradigma determină entitățile de programare (PP:proceduri, POO: obiecte, POA: aspecte ). Paradigma concurentă determină procesele(fire de execuție, asincronism, paralelism) ca fiind noile entităţi.
Reieșind din aceste aspecte, înțelegerea concurenţei presupune înțelegerea paradigmei acesteia. o.0
PS: Dacă nu am dreptate aştept reclamații.
Vadim as vrea sa atrag atentia ca ar fi mai bine de subliniat aceste entitati sub paradigma nesecventiala pentru determinarea entitatii "pralelism"
, cunoscind faptul ca paradigma de programare nesecventiala este grupata in 3 categorii:
1.paradigme de programare paralela;
2.paradigme de programare concurenta;
3.paradigme de programare distribuita.
Si dintr-un anumit punct de vedere, fiecare dintre ele include pe cea dinaintea ei.
” Si dintr-un anumit punct de vedere, fiecare dintre ele include pe cea dinaintea ei.” – Aceasta este prima cale de naștere a unei paradigme noi, ”evoluția”, după cum a menționat D-ul Ș.Marin la o pereche de IPP.

.
Cât despre entitatea ”paralelism” cred că nu ai înţeles corect ce am vrut să spun, paradigma de programare concurentă determină ”procesele” ca fiind entitate de construcție a programelor. Fenomenul de concurență evidențiindu-se la momentul de timp când două procese simultan ”luptă” pentru o ”resursă” comună. Prin noţiunea de paralelism subînțeleg ca o metodă de formare a proceselor, aceiași pentru fire de execuţie şi apeluri asincrone determinându-le ca metode.
PS: Entitate în paradigma de programare orientată spre obiecte este clasa
Leave your response!
Aviz
Categorii
Blogroll
Recent Comments
Most Commented
Most Popular Posts