Entwickler-Ecke

Basistechnologien - Threadsicherheit der Queue<T>


c#surfer - Mo 15.02.10 13:29
Titel: Threadsicherheit der Queue<T>
Hallo,

in der MSDN Hilfe zur Queue<T>-Klasse [http://msdn.microsoft.com/de-de/library/7977ey2c.aspx] wird folgendes gesagt:
Zitat:
Threadsicherheit
Öffentliche statische Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Nun habe ich mir als Beispiel Dequeue im Reflector angeschaut:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public T Dequeue()
{
    if (this._size == 0)
    {
        ThrowHelper.ThrowInvalidOperationException(ExceptionResource.InvalidOperation_EmptyQueue);
    }
    T local = this._array[this._head];
    this._array[this._head] = default(T);
    this._head = (this._head + 1) % this._array.Length;
    this._size--;
    this._version++;
    return local;
}

Wie wird hiermit die Threadsicherheit gewährleistet? Es gibt kein lock oder ähnliches...
Was übersehe ich hier?

Danke
c#surfer


Christian S. - Mo 15.02.10 13:41

Nein, aber das ist ja auch kein statischer Member, sondern ein Instanzmember.


c#surfer - Mo 15.02.10 15:34

Du hast natürlich völlig Recht. Ich hatte den Satz über die Threadsicherheit nicht gründlich genug gelesen. Danke für den Hinweis.