C〓Blocking Collectionの簡単な使い方
1132 ワード
この章はC〓Blocking Collectionパラレルコンテナの簡単な使い方、
1、BlockingCollection:古典的なブロッキング行列のデータ構造と類似して、複数のタスクの追加とデータの削除に適用でき、ブロッキングと限界能力を提供する.
2、並行集合の名前空間:System.coollections.concurrent
3、Blocking Collection:境界とブロックをサポートする容器(スレッド安全集合)の常用関数は以下の通りです.
Add:容器に元素を挿入する
TryTake:容器から元素を取り出して削除します.
TryPeek:容器から元素を取り出すが、削除しない.
Coplete Adding:容器に教えて、元素を追加して完成します.このまま追加したいと異常が発生します.
Is Completteed:消費スレッドについては、生産スレッドはまだ実行中であり、タスクはまだ完了していません.
4、簡単コードルーチン:一つのタスクは容器にデータを追加し、もう一つのタスクはデータを容器から取り出して処理する.
1、BlockingCollection:古典的なブロッキング行列のデータ構造と類似して、複数のタスクの追加とデータの削除に適用でき、ブロッキングと限界能力を提供する.
2、並行集合の名前空間:System.coollections.concurrent
3、Blocking Collection:境界とブロックをサポートする容器(スレッド安全集合)の常用関数は以下の通りです.
Add:容器に元素を挿入する
TryTake:容器から元素を取り出して削除します.
TryPeek:容器から元素を取り出すが、削除しない.
Coplete Adding:容器に教えて、元素を追加して完成します.このまま追加したいと異常が発生します.
Is Completteed:消費スレッドについては、生産スレッドはまだ実行中であり、タスクはまだ完了していません.
4、簡単コードルーチン:一つのタスクは容器にデータを追加し、もう一つのタスクはデータを容器から取り出して処理する.
System.Collections.Concurrent.BlockingCollection m_BlockData = new System.Collections.Concurrent.BlockingCollection();
// :
private void AddToList()
{
string tempStr = "aaa";
m_BlockData.Add(tempStr);
}
//
private void RaiseDataEvent()
{
while (true)
{
if (m_BlockData != null)
{
var temp = m_BlockData.Take();
}
if (!m_Receiver.IsOpen)
{
m_BlockData.Dispose();
m_BlockData = null;
break;
}
}
}