Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 69126|Svar: 4

[Kilde] .NET/C# Thread Safety Collection (sortering)

[Kopier link]
Opslået på 06/06/2017 17.13.53 | | |
Samlinger introduceret i .NET Framework 1.0 kan findes i System.Collections-navneområdet. Disse samlinger, inklusive den almindeligt anvendte ArrayList og Hashtable, giver en form for trådsikkerhed gennem Synchronized-egenskaben, som returnerer en trådsikker wrapper relateret til samlingen. Wrapperen fungerer ved at låse hele sættet for hver tilføjelse eller fjern-operation. Derfor skal hver tråd, der forsøger at få adgang til samlingen, vente, indtil det er dens tur til at erhverve låsen. Dette er ikke skalerbart og vil resultere i en betydelig ydelsesforringelse for store samlinger. Derudover forhindrer dette design ikke fuldstændigt konkurrence. For mere information, se følgende side på MSDN's hjemmeside: Synkronisering i generiske samlinger

Samlingsklassen, der blev introduceret i .NET Framework 2.0, kan findes i System.Collections.Generic navneområdet. Disse samlingsklasser inkluderer List<T>, Dictionary< TKey, TValue> osv. Disse klasser giver højere typesikkerhed og ydeevne sammenlignet med .NET Framework 1.0-klasser. Dog tilbyder .NET Framework 2.0-samlingsklassen ingen trådsynkronisering; Når elementer tilføjes eller fjernes på flere tråde samtidig, skal brugerkoden levere al synkronisering.

Vi anbefaler, at du bruger samtidige samlingsklasser i .NET Framework 4, fordi de ikke kun giver typesikkerheden for .NET Framework 2.0-samlingsklasserne, men også mere effektiv og komplet trådsikkerhed end trådsikkerheden fra .NET Framework 1.0-samlingen.


Nogle samtidige samlingstyper bruger lette synkroniseringsmekanismer som SpinLock, SpinWait, SemaphoreSlim og CountdownEvent, som er nye i .NET Framework 4. Typisk bruger ovenstående synkroniseringstyper "busy spinning" i en kort periode, før tråden sættes i den faktiske ventetilstand. Hvis ventetiden forventes at være meget kort, vil spin forbruge langt færre beregningsressourcer end ventetiden, hvilket involverer kernekonverteringer, der vil forbruge mange ressourcer. For samlingsklasser, der bruger rotation, betyder denne effektivitet, at flere tråde kan tilføje og fjerne elementer meget hurtigt. For mere information om begrænsning og blokering, se SpinLock og SpinWait. ConcurrentQueue-<T> og<T> ConcurrentStack-klasserne bruger slet ikke låse. I stedet er de afhængige af Interlocked-operationer for trådsikkerhed.

illustrere

Fordi samtidige samlingsklasser understøtter ICollection, leverer de implementeringer for IsSynchronized- og SyncRoot-egenskaberne, selvom de ikke er relaterede. IsSynchronized returnerer altid false (false version), mens SyncRoot altid er null (intet i Visual Basic).

Følgende tabel viser samlingstyperne i System.Collections.Concurrent-navneområdet.



slags
beskrivelse
BlockingCollection<T>
Tilbyder<T> enhver form for throttling og blokering for implementering af IProducerConsumerCollection. For mere information, se oversigt over BlockingCollection.
ConcurrentDictionary<TKey, TValue>
Key/value er en trådsikker implementering af ordbogen.
ConcurrentQueue<T>
Trådsikkerhedsimplementering af FIFO (first in, first out) køer.
ConcurrentStack<T>
Trådsikker implementering af LIFO (last-in, first-out) stakke.
ConcurrentBag<T>
Trådsikker implementering af en uordnet samling af elementer.
IProducerConsumerCollection<T>
typer skal implementeres iBlockingCollectiongrænseflader brugt i







Tidligere:.net/c# itextsharp til at generere PDF-kode
Næste:Install-Package: "MvvmLightLibs" har allerede en afhængighed defineret for "CommonServiceLocator"...
Opslået på 08/11/2017 15.24.45 |
Ja, jeg lærte det
 Udlejer| Opslået på 08/02/2021 10.00.41 |
Listen er<T> trådsikker, hvis listen slet ikke ændres under iterationen.
 Udlejer| Opslået på 23/03/2021 11.32.46 |
ConcurrentDictionary understøtter nye og opdaterede opdateringer
https://www.itsvse.com/thread-2955-1-1.html

 Udlejer| Opslået på 24/06/2023 14.20.57 |
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com