Net, áttekintést többszálas

Alkalmazására vonatkozó multi-threading, több okból is. Tegyük fel, hogy az alkalmazás időpontja vegyék igénybe a szerver a hálózatban, ami némi időt vesz igénybe. Nem szeretnék Ui mert blokkolva volt, és a felhasználónak kellett csak várni a pillanatot, amikor a kiszolgáló egy választ. A felhasználó végezhet akkoriban más művelet, vagy akár, hogy megszünteti a kérést küld a szervernek. Ilyen helyzetekben a használata multi-threading előnyöket.

Mindenféle igénylő tevékenységet vár, például miatt, hogy hozzáférjen a fájl, adatbázis vagy hálózati, elindíthat egy új szál, amely lehetővé teszi, hogy végezzen egy időben más feladatokat. A többszálas segíthet, még ha csak egy telített szempontjából a feldolgozás feladatokat. A többféle ugyanaz a folyamat lehet egyszerre végzik különböző CPU vagy több közös ezekben a napokban, a különböző magokat egy multi-core CPU.

Természetesen meg kell tudni, hogy a funkciók egyidejű végrehajtását több szálat. Annak a ténynek köszönhetően, hogy azokat végre ugyanabban az időben, amikor hozzáférést kap az azonos adatok lehetnek problémák. Hogy ez ne történhessen meg, hogy végre szinkronizációs mechanizmusokra.

Egy alkalmazás, amely működik a szerver, egy szál mindig megvárja a kérelmet az ügyfél, ezért nevezik flow-hallgató (hallgató menet). Kézhezvételét követően a kérelmet azonnal továbbítja azt egy külön szálat (szálat). amely folytatja tovább lépni az ügyféllel. A patak hallgató majd azonnal visszatért a feladatait megérkezéséig a következő kérés egy másik ügyfél.

Minden folyamat áll egy forrás, mint az ablak leírások, file kilincsek és egyéb tárgyak a nucleus van kiemelve a virtuális memóriát, és legalább egy szál. Flow terveznek végezni az operációs rendszer. Bármilyen áramlás van prioritása, a program számláló jelzi a helyét a programban, ahol van egy feldolgozó és egy köteg, amelyben tárolják a helyi változókat patak. Stack minden szál néz másképp, de a memória programkód és a sok, ezt minden szálat, ami működik ugyanazon folyamaton belül.

Ez lehetővé teszi flow egy folyamat gyorsan hatnak egymásra, mivel minden folyamat patakok utalnak ugyanarra a virtuális memóriát. Azonban az is bonyolítja a helyzetet, mivel lehetővé teszi a több szálon módosítja ugyanazon a memórián.

bázisok többszálas

Kétféle multitasking: folyamat-alapú és a menet-alapú. Ebben a tekintetben fontos, hogy megértsük a köztük lévő különbségeket. A folyamat irányításáért felelős az erőforrások, amelyek magukban foglalják a virtuális memóriát és a Windows kezeli, és legalább egy szál. Az eljárás során legalább az egyik áram szükséges végrehajtását minden programot. Ezért alapján többfeladatos folyamatok - az az eszköz, amely egy számítógépes program lehet két, párhuzamosan végzett, és így tovább.

Különbségek a multitasking alapuló folyamatok és szálak a következőképpen foglalható össze: a multitasking alapú folyamatok szervezésében, a párhuzamos végrehajtás programok, és az áramlás alapú multitasking - párhuzamos végrehajtás egyes részei egy programot.

A fő előnye, többszálas, hogy lehetővé teszi, hogy írjon programok hatékonyan működik azzal a képességgel, hogy kihasználja az állásidőt, hogy elkerülhetetlenül végrehajtása során a legtöbb program. Mint ismeretes, a legtöbb bemeneti-kimeneti eszközök, hogy a csatlakoztatott eszközök a hálózati portokat, lemezmeghajtókat vagy a billentyűzet, sokkal lassabb, mint a központi feldolgozó egység (CPU). Ezért, a legtöbb idejét a program kell várnia, hogy adatokat küldjön az input-output eszköz vagy információt kapnak belőle. És hála a multi-thread feldolgozó program képes megoldani néhány egyéb problémát leállás alatt.

Például, míg egy része a program elküldi a fájlt egy internetes kapcsolat, a másik része végezhet az olvasó a szöveges információ a billentyűzet, és a harmadik -, hogy végre pufferelés a következő mondat küldött adatok.

kétféle áramlás határozza meg a .NET Framework: előtér és a háttér. Alapértelmezésben a létrehozott áramot automatikusan prioritássá válnak, de lehetséges, hogy a háttérben. Az egyetlen különbség a háttér szál prioritása az, hogy a háttérben téma automatikusan megszűnik, ha megállt az összes elsőbbségi flow a folyamatba.

A kapcsolat a szervezet többfeladatos alapján áramlás van szükség egy speciális fajtája a mód, amely az úgynevezett szinkronizálás, és lehetővé teszi, hogy koordinálja menet végrehajtása meglehetősen sajátos módon. Erre a szinkronizálás, C # egy külön alrendszerben.

Minden folyamat áll, legalább egy szál, amely közkeletű nevén az elsődleges, hiszen itt kezdődik a program. A fő stream teremthet más szálak.

A C # nyelv és a .NET-keretrendszer támogatja mindkét multitasking: folyamat-alapú és a menet-alapú. Ezért a C # azt jelenti, hogy megteremtse a folyamatokat és a forgalom, valamint a kezelése, és azok, és mások. Annak érdekében, hogy egy új eljárás, programozás igényel egy kicsit erőfeszítést, mivel minden korábbi folyamat teljesen elkülönül a következő.

Sokkal fontosabb az a támogatás, C # többszálú feldolgozás, amely révén egyszerűsíti az írás nagy teljesítményű, többszálú programozás C #, mint néhány más nyelveken.

Az osztályok, amelyek támogatják a többszálú programozás, a térben meghatározott System.Threading neveket. Ezért minden többszálas C # program magában foglalja a következő sort:

System.Threading névtér tartalmazza a különböző típusú, amely lehetővé teszi, hogy hozzon létre a többszálas alkalmazások. Talán amelyek közül a legfontosabb a téma osztályban. mert ez egy külön téma. Programozottan kap egy hivatkozás a patak, akkor hajt végre egy konkrét esetben, egyszerűen hívja a statikus tulajdonság Thread.CurrentThread:

A .NET platform, nincs közvetlen összefüggés „1-1” közötti alkalmazási területeken (AppDomain) és forgalommal. Sőt, egyes AppDomain lehet több szálon futó bármikor. Sőt, az adott menet nem kötődik egyetlen alkalmazási területen élettartama során. Streams lehet átkelni alkalmazás doménhatár ahol tetszik és CLR a Windows ütemező.

Bár az aktív folyam átléphetik AppDomain határokat, minden patak egyes alkalommal végezhetjük egyetlen alkalmazási területen (más szóval, az lehetetlen, hogy egy szál dolgozott több alkalmazási területen azonnal). Programozott elérése a AppDomain, azaz az aktuális téma, hívja a statikus módszer Thread.GetDomain ():

Az egyetlen áramot is bármikor áthelyezhető egy adott kontextusban, és lehet mozgatni az új összefüggésben CLR szeszély. A jelenlegi helyzetben, amelyben a szál futását statikus Thread.CurrentContext tulajdonság (amely visszaadja System.Runtime.Remoting.Contexts.Context tárgy):

Ismét a mozgás közötti áramlások alkalmazási területeken és helyzetekben találkozik CLR. .NET fejlesztő akkor mindig marad boldog tudatlanságban, mikor elkészült egyes folyam (vagy pontosan hol helyezkedik az áthelyezés után). Mindazonáltal, ez hasznos tudni, hogy a különböző módon, hogy megszerezze a mögöttes primitívek.