Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 14970|Válasz: 3

[Forrás] [Valódi harc]. A NET/C# a SemaphoreSlim-et használja az egyidejű végrehajtási módszerek korlátozására

[Linket másol]
Közzétéve 2022. 02. 19. 21:23:20 | | | |
Követelmények: A hardver korlátozott erőforrásai miatt a programnak bizonyos mennyiségű hardvererőforrást kell fogyasztania, magas egyidejű esetben pedig ha olyan módszerek, amelyek túl sok erőforrást fogyasztanak a programban (nagy mennyiségű adat exportálása egy Excel táblába), az befolyásolhatja a teljes program képtelenségét a normál szolgáltatások nyújtására, és az operációs rendszer normál működését is.

Szemafor és szemafórVékony különbség

A SemaphoreSlim és a Semaphore hasonló funkcionalizációjúak. A SemaphoreSlim körülbelül négyszer gyorsabb, mint a Semaphore, de a SemaphoreSlim nem használható folyamatközi jelzésre.

A teljesítményjavulás oka az, hogy a SemaphoreSlim osztály könnyű alternatívát kínál a Semaphore osztályhoz képest, amely nem használja a Windows kernel szemafórot. Lényegében, ha nem kell szemafórokat nevezned kell, használd a SemaphoreSlim osztályt.

A SemaphoreSlim a SpinWait-en és a Monitoron alapul, tehát egy szál, amely zárolásra vár, CPU-ciklusokat fogyaszt el, remélve, hogy megszerzi a zárat, mielőtt egy másik szál átadná a helyet. Ha ez nem történik meg, akkor a szál lehetővé teszi a rendszer számára, hogy a kontextust váltsa és újra próbálkozhasson, amikor az operációs rendszer újra időzíti a szálat (néhány CPU ciklus elfogyasztásával). Ha hosszú a várakozás, ez a mód sok CPU ciklust igényelhet. A legjobb megoldás ehhez a megvalósításhoz, hogy a legtöbb esetben nincs várakozási idő, és szinte azonnal meg lehet kapni a zárat.
A Semaphore az operációs rendszer magjában lévő megvalósításokra támaszkodik, így minden zároláskor elég sok CPU ciklust igényel, de utána a szál egyszerűen hibernál, hogy megkapja az időt, ami a zároláshoz szükséges.

Szemafor dokumentáció:https://docs.microsoft.com/en-us ... aphore?view=net-6.0
SemaphoreSlim dokumentáció:https://docs.microsoft.com/en-us ... reslim?view=net-6.0

A metódus végrehajtása előtt a leggyakrabban használt várakozó módszerek a következőkHívj a saját vállalkozásod tényleges helyzete szerint

Wait(): Blokkolja a szálat, amíg be nem lép a SemaphoreSlim-be.
Wait(0): A módszer nem lesz blokkolva. Teszteli a várakozó kilincs állapotát, és azonnal visszavezeti.
Várj: Blokkolja a jelenlegi szálat, amíg be nem léphet a SemaphoreSlim-be, miközben időtúllépést ad egy 32 bites aláírt egész szám segítségével.

A forráskód a következő:

A képek a következők:







Előző:Linux titkos bejelentkezés (ssh) vagy titkos másolás (scp) fájlok más szerverekre
Következő:A Linux a lookbusy segítségével szimulálja a CPU-használatot
Közzétéve 2022. 02. 19. 23:16:57 |
Tanulj meg...
Közzétéve 2022. 02. 20. 22:19:24 |
teszt
 Háziúr| Közzétéve 2024. 12. 18. 20:40:10 |
A különbség a ManualResetEvent és az AutoResetEvent között, amit C# szálak tanulnak meg
https://www.itsvse.com/thread-4810-1-1.html
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com