C#でのスレッドセーフな並行コレクション
.NET Framework 4は、System.Collections.Concurrent名前空間をもたらしました。これには、スレッドセーフでスケーラブルなコレクションクラスがいくつかあります。これらのコレクションは、一度に複数のスレッドからアクセスできるため、同時コレクションと呼ばれます。
以下は、C#での同時収集です-
Sr.No | |
---|---|
1 | BlockingCollection あらゆるタイプの境界およびブロック機能。 |
2 | ConcurrentDictionary キーと値のペアの辞書のスレッドセーフな実装。 |
3 | ConcurrentQueue FIFO(先入れ先出し)キューのスレッドセーフな実装。 |
4 | ConcurrentStack LIFO(後入れ先出し)スタックのスレッドセーフな実装。 |
5 | ConcurrentBag 要素の順序付けられていないコレクションのスレッドセーフな実装。 |
6 | IProducerConsumerCollection BlockingCollectionで使用するために型が実装する必要のあるインターフェース |
スレッドセーフな後入先出(LIFO)コレクションであるConcurrentStack
ConcurrentStackを作成します。
ConcurrentStack<int> s = new ConcurrentStack<int>();
要素を追加
s.Push(1); s.Push(2); s.Push(3); s.Push(4); s.Push(5); s.Push(6);
例を見てみましょう
例
using System; using System.Collections.Concurrent; class Demo{ static void Main (){ ConcurrentStack s = new ConcurrentStack(); s.Push(50); s.Push(100); s.Push(150); s.Push(200); s.Push(250); s.Push(300); if (s.IsEmpty){ Console.WriteLine("The stack is empty!"); } else { Console.WriteLine("The stack isn't empty"); } } }
-
Javaでコレクションスレッドを安全にする方法は?
コレクションのみを処理するjava.utilパッケージメソッドのCollectionsクラスは、これらのメソッドがポリモーフィックアルゴリズムを含むさまざまな追加操作を提供します。 このクラスは、以下に示すように、synchronizedCollection()メソッドのさまざまなバリアントを提供します- Sr.No メソッドと説明 1 静的コレクションsynchronizedCollection(コレクション c) このメソッドは、任意のコレクションオブジェクトを受け入れ、指定されたコレクションに基づく同期された(スレッドセーフな)コレクションを返します。
-
Python辞書はスレッドセーフだと思いますか?
はい、Python辞書はスレッドセーフです。実際、Pythonのすべての組み込みはスレッドセーフです。これについて詳しくは、ドキュメントをご覧ください:https://docs.python.org/3/glossary.html#term-global-interpreter-lock