A Parallel Extensions ( angolul - "Parallel extensions") egy menedzselt párhuzamossági könyvtár , amelyet a Microsoft Research és a Microsoft CLR csoportja [1] együttműködésének eredményeként fejlesztettek ki . A könyvtár a .NET-keretrendszer [2] 4.0-s verziójában jelent meg . Két részből áll: Parallel LINQ (PLINQ) és Task Parallel Library (TPL) [3] [4] . Ez egy sor koordinációs adatszerkezetből (CDS) is áll – adatszerkezetek halmazaiból , amelyek a párhuzamos feladatok végrehajtásának szinkronizálására és koordinálására szolgálnak [5] .
A PLINQ vagy párhuzamos LINQ [6] párhuzamosítja az objektumok (LINQ for Objects) és XML adatok [7] (LINQ for XML) lekérdezések végrehajtását. A PLINQ-t úgy tervezték, hogy észlelje az adatok párhuzamosságát lekérdezések [3] segítségével . A PLINQ bármilyen számítást képes párhuzamosítani a lekérdezésként megvalósított objektumokon. Az objektumoknak azonban meg kell valósítaniuk az interfészt IParallelEnumerable, amelyet maga a PLINQ határoz meg. Belsőleg TPL -t [5] használ a végrehajtásához .
A Task Parallel Library ( TPL [8] ) a .NET [9] párhuzamos kiterjesztések feladat-párhuzamossági összetevője . Párhuzamos konstrukciókat biztosít, például párhuzamos hurkokat és normál metódushívásokat és delegátusokat használva , így a konstrukciók bármely CLI nyelvről használhatók . A szál létrehozását és lezárását , valamint a szálak számának a rendelkezésre álló processzorok számának megfelelő skálázását maga a könyvtár végzi [4] a fokozatos rögzítési ütemező [10] segítségével . ForForEach
A TPL más konstrukciókat is tartalmaz, mint például a Task és a Future . A feladat a program többi részétől függetlenül végrehajtható művelet. Ebben az értelemben szemantikailag egy szálnak felel meg, kivéve, hogy egy könnyebb objektum, és nem terheli az operációs rendszer szál létrehozásának többletköltségét. A Task Manager objektum sorba állítja a feladatokat , és ütemezve futnak egy szálkészlet több operációs rendszer-szálán, amikor kerül.
A jövő egy olyan feladat, amely eredményt hoz. Az eredmény kiértékelése a Future objektum által beágyazott háttérszálon történik, és a [4] megérkezéséig pufferelve . Ha megpróbálják megszerezni az eredményt, mielőtt még kiszámították volna, akkor a kérő szál blokkolva lesz, amíg az eredmény elérhetővé nem válik [9] .
Egy másik TPL-konstrukció a Parallel osztály . A TPL a strukturált párhuzamosság alapvető formáját biztosítja a Parallel osztály három statikus metódusán keresztül:
Párhuzamos.Invoke Párhuzamosan végrehajtja a művelet-küldöttek tömbjét, majd várja, hogy azok befejeződjenek Párhuzamos.Azért A for ciklus párhuzamos megfelelője a C# -ban Párhuzamos.Mindenkinek A foreach ciklus párhuzamos megfelelője a C#-banA .NET Parallel Extensions alapkoncepciója a Задача, amely egy kis kódblokk, általában lambda függvényként jelenik meg , és amely önállóan is végrehajtható. Mind a PLINQ, mind a TPL API módszereket biztosít a Tasks létrehozásához – a PLINQ kisebb feladatokra osztja a lekérdezést, míg a , és metódusok a ciklust feladatokra Parallel.Forosztják .Parallel.ForEachParallel.Invoke
A PFX tartalmaz egy objektumot Диспетчер задач, amely ütemezi a feladatok futtatását. A feladatkezelő globális feladatokat tartalmaz , amelyek ezután végrehajtásra kerülnek. Ezenkívül több szálat is tartalmaz , amelyekben a feladatok végrehajtásra kerülnek. Alapértelmezés szerint annyi szál jön létre, ahány processzor (vagy processzormag) van a rendszerben, bár ez a szám manuálisan módosítható. Minden szál egy szál-specifikus Tasks-sorhoz van társítva. Tétlen állapotban minden szál egy csomó feladatot vesz fel, és a saját helyi sorába helyezi őket, ahol azután sorra kerülnek végrehajtásra. Ha a globális várólista üres, a szál megkeresi a Tasks-t a társaik soraiban, és felveszi azokat a Tasks-okat, amelyek a leghosszabb ideig voltak a sorban ( Fokozatos feladatrögzítés ). Végrehajtáskor a Tasks önállóan hajtódik végre, míg az egyik Task állapotának megváltoztatása nem függ a többitől. Ennek eredményeként, ha megosztott erőforrást használnak, továbbra is manuálisan kell szinkronizálni őket zárolások vagy más konstrukciók segítségével.
.HÁLÓ | |
---|---|
Megvalósítások | |
Építészet | |
Infrastruktúra |
|
Microsoft nyelvek | |
Más nyelvek | |
Windows alapok | |
Alkatrészek | |
Összehasonlítások |
|
Jövő technológiái | |
Információs források |