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:
|