Menet medence c #, patakok

Minden alkalommal, amikor fut a C # menet. néhány száz ezredmásodperc költött szervez olyan dolgok, mint egy új köteg lokális változók. Csökkenti ezeket a rezsiköltségek lehetővé teszi a menet medence, mely tárolja előre elkészített újrahasznosítható folyik. thread pool szervezet elengedhetetlen a hatékony párhuzamos programozási és finomszemcsés párhuzamosság; egy szál medence C #, lehetővé teszi, hogy rövid távon művelet overhead nélkül kapcsolódó felállításáról áramlását.
Amikor az áramlás a medence, hogy fontolja meg néhány pontot.
• lehetetlensége illeszkedő tulajdonságok neve áramlását a medence hibakeresés nehéz (bár amikor hibakeresés ablak szálak környezet Visual Studio is csatolni kell az áramlási leírás).
• áramlik a medence mindig a háttérben.
• blokkolja áramlás a medence gyenge teljesítményt eredményezhet
Lehetőség van szabadon prioritásának módosításához egy szálat a medence -, ha az áramlás visszatér a medencébe, az eredeti elsőbbségi helyreáll.
Annak eldöntésére, hogy a jelenlegi áramlásban a medence, amelynek célja Thread.CurrentThread.IsThreadPoolThread tulajdon.
A legegyszerűbb módja az explicit dob semmit az áramlás a medence - a használata Task.Run
Task.Run (() => Console.WriteLine ( "Hello a menet medence"));
Mivel kiadása előtt verziója a .NET 4, a koncepció nem létezik a probléma, közös alternatíva az, hogy hívja a ThreadPool. QueueUserWorkltem:
ThreadPool.QueueUserWorkltem (notUsed => Console.WriteLine ( "Jó napot"));
A tisztaság a menet medence
Menet medence szolgálja egy másik funkció, amely annak biztosítására, hogy az ideiglenes többlet nagy számítási igényű munka nem eredményez meghaladó CPU limit. Határértéket meghaladó - az állapot, melyben aktív áramlását megelőzve CPU magot, és az operációs rendszernek kell kiosztani időszeleteiből patakok. Határértéket meghaladó károkat a teljesítmény, mert időfelosztás szelet igényel nagy összefüggésben váltás, és ez oda vezethet, hogy a rokkantsági CPU cache elengedhetetlenné vált a jó teljesítmény érdekében a modern processzorok.
A CLR elkerüli határértéket meghaladó a menet medence rovására feladatokat sorban és megszokott a start. Úgy kezdődik, megkezdődik az egyidejű feladatok számának felel meg a hardver magok, majd beállítja a párhuzamosság a szélsőérték kereső algoritmus, tuning folyamatos terhelés egy bizonyos irányba. Ha a teljesítmény javul, a CLR folyamatosan halad azonos irányba (és egyéb - az ellenkező). Ez biztosítja a támogatása az optimális teljesítmény görbe, még a jelenlétében versengő folyamatok a számítógépen.
A stratégia végrehajtása a CLR, jól működik abban az esetben, elégedettség a következő két feltételt:
• munka elemei alapvetően rövid életű (kevesebb mint 250 milliszekundum, és ideális esetben kevesebb, mint 100 milliszekundum), így a CLR sok lehetőséget mérő- és beállítása;
• feladatok a legtöbb időt le van tiltva, nem uralják a medencében.
Zárolás miatt megbízhatatlannak ez ad egy hamis benyomást a CLR, hogy betölti a CPU. CLR közeg kellően intelligens, hogy érzékeli ezt, és kompenzálják (bevezetésével további hullámok a medencében), bár ez lehet, hogy a medence a sérülékeny egy későbbi meghaladó a limit. Azt is bevezetni késleltetéssel CLR sebességét lehet szabályozni az új hullámok. különösen a folyamat korai szakaszában az élettartamot alkalmazás (különösen a kliens operációs rendszer, ahol támogatja az alacsony fogyasztás erőforrások).
Tisztaság fenntartása szál medence különösen fontos, ha szükség van rá, hogy teljes mértékben kihasználja a CPU.