Nõuded: Riistvara piiratud ressursside tõttu peab programm tarbima teatud hulga riistvaralisi ressursse; kõrge samaaegsuse korral, kui mõned programmi liiga palju ressursse tarbivad meetodid ei ole piiratud (näiteks suure andmehulga eksportimine Exceli tabelisse), võib see mõjutada kogu programmi võimetust pakkuda normaalseid teenuseid ning mõjutada ka operatsioonisüsteemi normaalset tööd.
Semafor ja SemaforSlim erinevus
SemaphoreSlim ja Semaphore on funktsionaalsuse poolest sarnased. SemaphoreSlim on umbes 4 korda kiirem kui Semaphore, kuid SemaphoreSlim'i ei saa kasutada protsessidevaheliseks signalisatsiooniks.
Jõudluse paranemise põhjuseks on see, et SemaphoreSlim klass pakub kerget alternatiivi Semaphore'i klassile, mis ei kasuta Windowsi kerneli semafori. Põhimõtteliselt, kui sul pole vaja semafore nimetada, kasuta SemaphoreSlim klassi.
SemaphoreSlim põhineb SpinWaitil ja Monitoril, nii et lõim, mis ootab lukustust, kulutab protsessori tsükleid, lootes lukku omandada enne, kui see annab teed teisele lõimele. Kui seda ei juhtu, siis võimaldab lõim süsteemil konteksti vahetada ja uuesti proovida, kui operatsioonisüsteem selle lõime uuesti ajastab (kasutades mõningaid protsessoritsükleid). Kui ooteaeg on pikk, võib see režiim võtta palju protsessori tsükleid. Seega on selle rakenduse parim juhtum see, et enamasti pole ooteaega ja lukustus saab peaaegu kohe. Semafor tugineb operatsioonisüsteemi tuuma rakendustele, nii et iga kord, kui lukk hangitakse, võtab see üsna palju protsessori tsükleid, kuid pärast seda lülitub lõim lihtsalt talveunne, et saada lukustamiseks kuluv aeg.
Semafori dokumentatsioon:https://docs.microsoft.com/en-us ... aphore?view=net-6.0 SemaphoreSlim dokumentatsioon:https://docs.microsoft.com/en-us ... reslim?view=net-6.0
Enne meetodi käivitamist on tavaliselt kasutatavad ootemeetodid järgmisedHelista vastavalt oma ettevõtte tegelikule olukorrale!
Wait(): Blokeerib lõime, kuni see saab siseneda SemaphoreSlim-i. Oota(0): Meetodit ei blokeerita. See testib ootekäepideme seisukorda ja tagastab kohe. Oota: blokeerib praeguse lõime, kuni see saab siseneda SemaphoreSlim'i, määrates samal ajal ajapiirangu 32-bitise allkirjastatud täisarvuga.
Lähtekood on järgmine:
Renderdused on järgmised:
|