Reikalavimai: Dėl ribotų aparatinės įrangos išteklių programa turi sunaudoti tam tikrą kiekį aparatinės įrangos išteklių, esant dideliam sutapimui, jei kai kurie metodai, kurie sunaudoja per daug programos išteklių, nėra ribojami (eksportuojant didelį duomenų kiekį į "Excel" lentelę), tai gali turėti įtakos visos programos nesugebėjimui teikti įprastų paslaugų, taip pat turėti įtakos normaliam operacinės sistemos veikimui.
Semaforas ir SemaphoreSlim skirtumas
"SemaphoreSlim" ir "Semaphore" yra panašūs savo funkcionalumu. SemaphoreSlim yra maždaug 4 kartus greitesnis nei Semaphore, tačiau SemaphoreSlim negali būti naudojamas signalizacijai tarp procesų.
Našumo pagerėjimo priežastis yra ta, kad "SemaphoreSlim" klasė yra lengva alternatyva "Semaphore" klasei, kuri nenaudoja "Windows" branduolio semaforo. Iš esmės, jei jums nereikia pavadinti semaforų, naudokite SemaphoreSlim klasę.
"SemaphoreSlim" yra pagrįstas "SpinWait" ir "Monitor", todėl gija, laukianti, kol gaus užraktą, sunaudoja procesoriaus ciklų laikotarpį, tikėdamasi įsigyti užraktą prieš užleisdama vietą kitai gijai. Jei taip neatsitiks, gija leidžia sistemai perjungti kontekstą ir bandyti dar kartą, kai OS vėl suplanuoja tą giją (sunaudodama kai kuriuos procesoriaus ciklus). Jei laukimas ilgas, šis režimas gali sunaudoti daug procesoriaus ciklų. Taigi geriausias šio įgyvendinimo atvejis yra tas, kad dažniausiai nėra laukimo laiko ir užraktą galite gauti beveik iš karto. Semaphore remiasi OS branduolio įgyvendinimais, todėl kiekvieną kartą, kai užraktas įsigyjamas, reikia nemažai procesoriaus ciklų, tačiau po to gija tiesiog užmigdo, kad gautų laiką, kurio reikia užraktui gauti.
Semaforų dokumentacija:https://docs.microsoft.com/en-us ... aphore?view=net-6.0 SemaphoreSlim dokumentacija:https://docs.microsoft.com/en-us ... reslim?view=net-6.0
Prieš vykdant metodą, dažniausiai naudojami laukimo būdaiSkambinkite pagal faktinę savo verslo situaciją!
Wait(): blokuoja giją, kol ji pateks į SemaphoreSlim. Palaukite(0): metodas nebus užblokuotas. Jis patikrins laukimo rankenos būseną ir nedelsiant grįš. Palaukite: blokuoja dabartinę giją, kol ji galės patekti į SemaphoreSlim, nurodydama skirtąjį laiką naudojant 32 bitų pasirašytą sveikąjį skaičių.
Šaltinio kodas yra toks:
Atvaizdai yra tokie:
|