代码之家  ›  专栏  ›  技术社区  ›  jassuncao

中针对并发性进行了优化的集合。网

  •  1
  • jassuncao  · 技术社区  · 17 年前

    在java世界中,有一组 classes 针对并发任务进行了优化。我想里面也有类似的东西。Net,但在MSDN上快速搜索后,我什么也没找到。我一直在寻找一个在消费者/生产者情况下使用的具有公平政策的队列。

    谢谢。

    3 回复  |  直到 17 年前
        1
  •  3
  •   Frederik Gheysels    17 年前

    Parallels库。NET包含一些线程安全的集合。

    其中之一是 ConcurrentQueue<T>

    http://blogs.msdn.com/pfxteam/archive/2008/08/12/8852005.aspx

        2
  •  1
  •   Quibblesome    17 年前

    肯定是矛盾修饰法?线程安全的集合可能会获得比所需更多的锁。为了优化,通常将锁定义在更高的位置。

        3
  •  0
  •   Tamas Czinege    17 年前

    非通用。NET集合(System.Sollections命名空间)都可以做到这一点。我从中摘录了以下片段 MSDN Queue.SyncRoot page :

    Queue myCollection = new Queue();
    
    lock(myCollection.SyncRoot)
    {
       foreach (Object item in myCollection)
       {
          // Insert your code here.
       }
    }
    

    或者,您可以立即创建一个同步包装器:

    Queue mySyncCollection = Queue.Synchronized(myCollection);
    // No locks required
    

    不幸的是,对于泛型集合来说,这是不可能的,所以如果你想使用泛型集合,你可能必须编写自己的包装器/扩展方法。

    推荐文章