SORU
1 EKİM 2008, ÇARŞAMBA


Ne'In thread-safe Sözlük?uygulamak için en iyi yolu

C evresel bir Sözlük uygulamak mümkün oldu# C türetmek ve özel SyncRoot bir nesne tanımlayarak:

public class SafeDictionary<TKey, TValue>: IDictionary<TKey, TValue>
{
    private readonly object syncRoot = new object();
    private Dictionary<TKey, TValue> d = new Dictionary<TKey, TValue>();

    public object SyncRoot
    {
        get { return syncRoot; }
    } 

    public void Add(TKey key, TValue value)
    {
        lock (syncRoot)
        {
            d.Add(key, value);
        }
    }

    // more IDictionary members...
}

O zaman benim tüketicilerin (çoklu iş parçacığı) boyunca bu SyncRoot nesne üzerinde kilit

Örnek:

lock (m_MySharedDictionary.SyncRoot)
{
    m_MySharedDictionary.Add(...);
}

O iş yapmak mümkün değildi, ama bu çirkin bir kod sonuçlandı. Benim sorum, iş parçacığı için güvenli bir Sözlük uygulama, daha zarif, daha iyi bir yolu var mı?

CEVAP
13 EYLÜL 2010, PAZARTESİ


.Eşzamanlılık destekleyen NET 4.0 sınıf ConcurrentDictionary olarak adlandırılır

http://msdn.microsoft.com/en-us/library/dd287191.aspx

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DorkmanScott

    DorkmanScott

    14 NİSAN 2006
  • NYLON Video

    NYLON Video

    11 Aralık 2006
  • tatermoog

    tatermoog

    2 AĞUSTOS 2006