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

  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • Gavin Hoey

    Gavin Hoey

    21 Aralık 2007
  • TomSka

    TomSka

    30 Mayıs 2006