Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 14970|Vastaus: 3

[Lähde] [Varsinaista taistelua]. NET/C# käyttää SemaphoreSlimiä rajoittaakseen samanaikaisia suoritusmenetelmiä

[Kopioi linkki]
Julkaistu 19.2.2022 21.23.20 | | | |
Vaatimukset: Koska laitteiston resurssit ovat rajalliset, ohjelman täytyy kuluttaa tietty määrä laitteistoresursseja; korkean samanaikaisuuden tapauksessa, jos jotkut ohjelman resurssit kuluttavat menetelmät eivät ole rajoitettuja (viemällä suuri määrä dataa Excel-taulukkoon), se voi vaikuttaa koko ohjelman kyvyttömyyteen tarjota normaaleja palveluita ja myös käyttöjärjestelmän normaalia toimintaa.

Semafori ja semaforiSlim ero

SemaphoreSlim ja Semaphore ovat toiminnallisuudeltaan samankaltaisia. SemaphoreSlim on noin neljä kertaa nopeampi kuin Semaphore, mutta SemaphoreSlimiä ei voi käyttää prosessien väliseen signalointiin.

Suorituskyvyn parannuksen syynä on se, että SemaphoreSlim-luokka tarjoaa kevyen vaihtoehdon Semaphore-luokalle, joka ei käytä Windows-ytimen semaforia. Käytännössä, jos sinun ei tarvitse nimetä semaforeja, käytä SemaphoreSlim-luokkaa.

SemaphoreSlim perustuu SpinWaitiin ja Monitoriin, joten säie, joka odottaa lukituksen saamista, kuluttaa prosessorin syklejä toivoen saavansa lukon ennen kuin antaa tilaa uudelle säikeelle. Jos näin ei tapahdu, säie antaa järjestelmän vaihtaa kontekstia ja yrittää uudelleen, kun käyttöjärjestelmä aikatauluttaa säikeen uudelleen (kuluttamalla prosessorin syklejä). Jos odotus on pitkä, tämä tila voi viedä paljon prosessorin syklejä. Paras tapaus tälle toteutukselle on, että useimmiten ei ole odotusaikaa ja lukitus saadaan lähes heti.
Semafori perustuu käyttöjärjestelmän ytimen toteutuksiin, joten joka kerta kun lukko hankitaan, se vie melko paljon prosessorin syklejä, mutta sen jälkeen säie vain horrostetaan saadakseen lukon saamiseen tarvittavan ajan.

Semaforidokumentaatio:https://docs.microsoft.com/en-us ... aphore?view=net-6.0
SemaphoreSlim -dokumentaatio:https://docs.microsoft.com/en-us ... reslim?view=net-6.0

Ennen menetelmän suorittamista yleisesti käytetyt odotusmenetelmät ovat seuraavatSoita oman yrityksesi todellisen tilanteen mukaan

Wait(): Estää säikeen, kunnes se pääsee SemaphoreSlim-kanavaan.
Wait(0): Menetelmää ei estetä. Se testaa odotuskahvan tilan ja palaa välittömästi.
Odota: Estää nykyisen säikeen, kunnes se pääsee SemaphoreSlimiin, samalla määrittäen aikakatkaisun 32-bittisen allekirjoitetun kokonaisluvun avulla.

Lähdekoodi on seuraava:

Renderöinnit ovat seuraavat:







Edellinen:Linux Secretless Login (ssh) tai Secretless Copy (scp) -tiedostot muille palvelimille
Seuraava:Linux käyttää lookbusy simuloidakseen suorittimen käyttöä
Julkaistu 19.2.2022 23.16.57 |
Opettele oppimaan...
Julkaistu 20.2.2022 22.19.24 |
testi
 Vuokraisäntä| Julkaistu 18.12.2024 20.40.10 |
Ero ManualResetEventin ja AutoResetEventin välillä oppii C#-säikeistä
https://www.itsvse.com/thread-4810-1-1.html
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com