Szálak és szálkezelés

A többszálas működés lehetővé teszi az alkalmazás válaszkészségének növelését, és ha az alkalmazás többprocesszoros vagy többmagos rendszeren fut, növelje annak átviteli sebességét.

Folyamatok és szálak

A folyamat egy végrehajtó program. Az operációs rendszer folyamatokkal választja el a végrehajtás alatt álló alkalmazásokat. A szál az az alapegység, amelyhez az operációs rendszer processzoridőt rendel. Minden szál ütemezési prioritással rendelkezik, és olyan struktúrákat tart fenn, amelyek segítségével a rendszer mentheti a szálkörnyezetet, amikor a szál végrehajtása szünetel. A szálkörnyezet tartalmazza az összes információt, amire a szálnak szüksége van a végrehajtás zökkenőmentes folytatásához, beleértve a szál processzorregisztrátorainak és veremkészletének készletét. Egy folyamat kontextusában több szál is futtatható. A folyamat összes szála osztozik a virtuális címtéren. A szál a programkód bármely részét végrehajthatja, beleértve a másik szál által jelenleg végrehajtott részeket is.

Feljegyzés

.NET-keretrendszer lehetővé teszi az alkalmazások elkülönítését egy folyamaton belül az alkalmazástartományok használatával. (Az alkalmazástartományok nem érhetők el a .NET Core-on.) További információkért tekintse meg az Alkalmazástartományok című cikk Alkalmazástartományok és szálak szakaszát.

A .NET-programok alapértelmezés szerint egyetlen szálból indulnak ki, amelyet gyakran elsődleges szálnak neveznek. Azonban további szálakat is létrehozhat a kód párhuzamos vagy egyidejű végrehajtásához az elsődleges szállal. Ezeket a szálakat gyakran munkavégző szálaknak nevezik.

Mikor érdemes több szálat használni?

Több szál használatával növelheti az alkalmazás válaszképességét, és kihasználhatja a többprocesszoros vagy többmagos rendszer előnyeit az alkalmazás átviteli sebességének növeléséhez.

Fontolja meg egy asztali alkalmazást, amelyben az elsődleges szál felelős a felhasználói felület elemeiért, és válaszol a felhasználói műveletekre. Feldolgozószálak használatával olyan időigényes műveleteket hajthat végre, amelyek egyébként az elsődleges szálat foglalják el, és a felhasználói felületet nem rugalmassá teszik. Dedikált szálat is használhat a hálózati vagy eszközkommunikációhoz, hogy jobban reagáljon a bejövő üzenetekre vagy eseményekre.

Ha a program párhuzamosan végrehajtható műveleteket hajt végre, a teljes végrehajtási idő csökkenthető, ha ezeket a műveleteket külön szálakban hajtja végre, és a programot többprocesszoros vagy többmagos rendszeren futtatja. Egy ilyen rendszeren a többszálúság használata növelheti az átviteli sebességet és a megnövekedett válaszképességet.

Többszálúság használata a .NET-ben

A .NET-keretrendszer 4-től kezdve a többszálúság használatának ajánlott módja a párhuzamos feladatkódtár (TPL) és a párhuzamos LINQ (PLINQ) használata. További információ: Párhuzamos programozás.

A TPL és a PLINQ egyaránt a ThreadPool szálakra támaszkodik. Az System.Threading.ThreadPool osztály egy .NET-alkalmazást biztosít feldolgozószálak készletével. Szálkészlet-szálakat is használhat. További információ: A felügyelt szálkészlet.

Végre használhatja azt az System.Threading.Thread osztályt, amely egy felügyelt szálat jelöl. További információ: Szálak és szálkezelés használata.

Előfordulhat, hogy több szálnak is hozzá kell férnie egy megosztott erőforráshoz. Ahhoz, hogy az erőforrás javítatlan állapotban maradjon, és elkerülje a versenyfeltételeket, szinkronizálnia kell a szál hozzáférését hozzá. Érdemes lehet több szál interakcióját is koordinálni. A .NET számos típust biztosít, amelyekkel szinkronizálhatja a megosztott erőforráshoz való hozzáférést, vagy koordinálhatja a szál interakcióját. További információ: A szinkronizálási primitívek áttekintése.

Kezelje a szálak kivételeit. A szálak nem kezelt kivételei általában megszakítják a folyamatot. További információ: Kivételek felügyelt szálakban.

Lásd még