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

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • dhcrr's channel

    dhcrr's chan

    2 Ocak 2007
  • TheXiaxue

    TheXiaxue

    3 AĞUSTOS 2009