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

Näkymä: 41603|Vastaus: 2

[Lähde] .NET/C# toteuttaa yksinkertaisen lokituksen, joka perustuu BlockingCollectioniin

[Kopioi linkki]
Julkaistu 2021-1-5 klo 14:58:50 | | | |
Kirjoitin aiemmin yksinkertaisen lokitustukikurssin, kopioin sen toisesta kehyksestä, ja testi ei ole helppokäyttöinen, kuten seuraava:

C# on helpoin tapa kirjoittaa lokkeja
https://www.itsvse.com/thread-5111-1-1.html
Tämä artikkeli toteuttaa uudelleen yksinkertaisen lokiluokan BlockingCollectionin pohjalta.

.NET/C# Thread Safety Collection (vertailu)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T> on säiketurvallista kokoelmaluokkaa, joka tarjoaa seuraavat toiminnot:

Toteuta tekijä-käyttäjä-malli.
Lisää ja hae esineitä samanaikaisesti monisäikeisyyden kautta.
Valinnainen maksimikapasiteetti.
Kun kokoelma on tyhjä tai täynnä, se estetään insert- ja poistotoiminnoilla.
Lisäämis- ja poistoyritykset eivät estä tai tapahdu tietyn ajan.
Kapselointi toteuttaa minkä tahansalaisen kokoelmatyypin IProducerConsumerCollection<T>
Käytä peruutustunnistetta peruutustoiminnon suorittamiseen.
Kaksi tyyppiä enumeja, jotka käyttävät foreach (Visual Basicissa, For Each), ovat tuettuja: vain lukua käyttävät enumit. Luettelointi, joka poistaa kohteen, kun jokin alkio on lueteltu.


Microsoft esittelee:Hyperlinkin kirjautuminen on näkyvissä.

BlockingCollection on säikeiden turvallinen estojono, joka käyttää tätä ominaisuutta tuottaja-kuluttaja-tilan toteuttamiseen prosessissa, kuten viestien välityksessä, lokituksessa jne.

Kutsu sen Lisää-metodia lisätäksesi tietoja jonoon, ja kun jonossa ei ole viestejä, IsCompleted estää aina while-silmukan, joten se ei aiheuta kuollutta silmukkaa. Kun uusi viesti ilmestyy, IsCompleted in while aktivoituu ja palauttaa bool-tyypin, jolloin suoritus jatkuu, eli datan hakeminen säikeestä.


Aiemmin estimme säikeen kutsumalla WaitOne-metodia ManualResetEventistä ja kutsumalla Reset- ja Set-metodit signaalin välittämiseksi, seuraavasti:

c# kapseloi universaalin QueueHelper-jonon
https://www.itsvse.com/thread-5029-1-1.html


Testi kirjoittaa 10 000 lokkia, mikä vie alle 10 millisekuntia, kuten alla olevassa kuvassa näkyy:



Koodi on seuraava:

Lähdekoodin lataus:

Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyväVastaus





Edellinen:warning: LF will be replaced by CRLF in xxxx.
Seuraava:Entity Frameworkin kyselyoptimointi KANSSA(NOLOCK)
 Vuokraisäntä| Julkaistu 2021-1-23 klo 11:53:55 |
.NET/C# perustuu BlockingCollectionin taustatehtäväjonoon
https://www.itsvse.com/thread-9528-1-1.html

Julkaistu 2023-4-24 22:36:31 |
Erinomaista, erittäin hyvää opiskelumateriaalia
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