Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 14970|Atbildi: 3

[Avots] [Faktiskā cīņa]. NET/C# izmanto SemaphoreSlim, lai ierobežotu vienlaicīgas izpildes metodes

[Kopēt saiti]
Publicēts 19.02.2022 21:23:20 | | | |
Prasības: Aparatūras ierobežoto resursu dēļ programmai ir jāpatērē noteikts aparatūras resursu daudzums, ja dažas metodes, kas patērē pārāk daudz programmas resursu, nav ierobežotas (eksportējot lielu datu daudzumu Excel tabulā), tas var ietekmēt visas programmas nespēju nodrošināt normālus pakalpojumus, kā arī ietekmēt operētājsistēmas normālu darbību.

Semafors un SemaphoreSlim atšķirība

SemaphoreSlim un Semaphore ir līdzīgi funkcionalitātei. SemaphoreSlim ir aptuveni 4 reizes ātrāks nekā Semaphore, bet SemaphoreSlim nevar izmantot starpprocesu signalizācijai.

Veiktspējas uzlabošanas iemesls ir tas, ka SemaphoreSlim klase nodrošina vieglu alternatīvu Semaphore klasei, kas neizmanto Windows kodola semaforu. Būtībā, ja jums nav nepieciešams nosaukt semaforus, izmantojiet SemaphoreSlim klasi.

SemaphoreSlim ir balstīts uz SpinWait un Monitor, tāpēc pavediens, kas gaida bloķēšanu, patērē CPU ciklu periodu, cerot iegūt slēdzeni, pirms dodas ceļā uz citu pavedienu. Ja tas nenotiek, tad pavediens ļauj sistēmai pārslēgt kontekstu un mēģināt vēlreiz, kad OS ieplāno šo pavedienu vēlreiz (patērējot dažus CPU ciklus). Ja gaidīšana ir ilga, šis režīms var patērēt daudz CPU ciklu. Tātad labākais gadījums šai ieviešanai ir tas, ka lielākoties nav gaidīšanas laika, un jūs varat iegūt slēdzeni gandrīz nekavējoties.
Semaphore paļaujas uz OS kodola ieviešanu, tāpēc katru reizi, kad tiek iegūta slēdzene, tas aizņem diezgan daudz CPU ciklu, bet pēc tam pavediens vienkārši pārziemo, lai iegūtu laiku, kas nepieciešams bloķēšanas iegūšanai.

Semafora dokumentācija:https://docs.microsoft.com/en-us ... aphore?view=net-6.0
SemaphoreSlim dokumentācija:https://docs.microsoft.com/en-us ... reslim?view=net-6.0

Pirms metodes izpildes biežāk izmantotās gaidīšanas metodes ir šādasZvaniet atbilstoši sava uzņēmuma faktiskajai situācijai

Wait(): bloķē pavedienu, līdz tas var iekļūt SemaphoreSlim.
Pagaidiet(0): Metode netiks bloķēta. Tas pārbaudīs gaidīšanas roktura stāvokli un nekavējoties atgriezīsies.
Pagaidiet: bloķē pašreizējo pavedienu, līdz tas var ievadīt SemaphoreSlim, vienlaikus norādot taimautu, izmantojot 32 bitu parakstītu veselu skaitli.

Avota kods ir šāds:

Atveidojumi ir šādi:







Iepriekšējo:Linux Secretless Login (ssh) vai Secretless Copy (scp) failus uz citiem serveriem
Nākamo:Linux izmanto lookaizņemt, lai simulētu CPU lietojumu
Publicēts 19.02.2022 23:16:57 |
Iemācieties mācīties...
Publicēts 20.02.2022 22:19:24 |
tests
 Saimnieks| Publicēts 18.12.2024 20:40:10 |
Atšķirība starp ManualResetEvent un AutoResetEvent, ko apgūst C# pavedieni
https://www.itsvse.com/thread-4810-1-1.html
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com