非同期BlockingCollection <T>のようなものはありますか?

祖父

非同期awaitの結果を確認たいBlockingCollection<T>.Take()ので、スレッドをブロックしません。このようなものを探しています:

var item = await blockingCollection.TakeAsync();

私はこれができることを知っています:

var item = await Task.Run(() => blockingCollection.Take());

しかし、ThreadPool代わりに(の別のスレッドがブロックされるため、それはアイデア全体をやや殺します。

代替手段はありますか?

スティーブン・クリアリー

私が知っている4つの選択肢があります。

1つはチャネルで、非同期ReadWrite操作をサポートするスレッドセーフキューを提供しますチャネルは高度に最適化されており、オプションで、しきい値に達した場合に一部のアイテムをドロップすることをサポートしています。

次はTPLデータフローBufferBlock<T>からです。コンシューマーが1つしかない場合は、またはを使用する、単にリンクすることができます詳細については、私のブログを参照してくださいOutputAvailableAsyncReceiveAsyncActionBlock<T>

最後の2つは私が作成したタイプで、AsyncExライブラリで利用できます

AsyncCollection<T>は、とasyncほぼ同等でありBlockingCollection<T>ConcurrentQueue<T>またはなどの同時プロデューサー/コンシューマーコレクションをラップできConcurrentBag<T>ます。TakeAsyncコレクションからアイテムを非同期的に消費するために使用できます詳細については、私のブログを参照してください

AsyncProducerConsumerQueue<T>よりポータブルなasync互換性のあるプロデューサー/コンシューマーキューです。を使用DequeueAsyncして、キューからアイテムを非同期的に消費できます。詳細については、私のブログを参照してください

これらの選択肢の最後の3つは、同期および非同期のプットとテイクを可能にします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

IQueryableとIQueryable <T>は非同期ですか?

分類Dev

なぜ非同期関数よりも非同期関数なのか?

分類Dev

TypescriptにReturnType <T>のようなArgumentsType <T>はありますか?

分類Dev

.NET 4.5の不完全な非同期タスクにはどのような影響がありますか?

分類Dev

C#非同期メソッドの戻り型をTask <T>またはvoid以外のものにすることは可能ですか?

分類Dev

Process.Startに相当する非同期のものはありますか?

分類Dev

非同期メソッドの戻り値の型は、void、TaskまたはTask <T>である必要があります

分類Dev

多数のPythonリクエストを非同期で実行する最も簡単な方法はありますか?

分類Dev

ApacheのようなWebサーバーはどのように非同期で動作しますか?djangoにも相対的なロジックがありますか?

分類Dev

非同期Task <T>メソッドを同期的に実行するにはどうすればよいですか?

分類Dev

どのように非同期待機を使用する必要がありますか?

分類Dev

非非同期/待機コードでのAsyncLocal <T>の効果は何ですか?

分類Dev

async / awaitなしでTask <T>を非同期的に待機します

分類Dev

DataGridに表されていないObservableCollection <T>の非同期変更

分類Dev

これは本当に非同期ですか?IEnumerableを<T>拡張

分類Dev

非同期コードが同期よりもはるかに高速であると見なされるのはなぜですか?

分類Dev

非同期コードはhaskellの同期バージョンよりも実行が遅くなります

分類Dev

Task <T>なしのタスクの戻り値(非同期/待機パターン)

分類Dev

非同期コードが同期よりも時間がかかる可能性はありますか?

分類Dev

どのようにJavaの非同期に動作しますか?非同期メソッドは非同期で実行していないようです

分類Dev

非同期メソッドのシグネチャエラー。void、Task、またはTask <T>を返す必要があります

分類Dev

非同期は同期の15倍の時間がかかります

分類Dev

非同期は延期よりも優れていますか?

分類Dev

非同期データを処理するためのより良い、より短い方法はありますか?

分類Dev

非同期タスクを使用したBlockingCollection

分類Dev

You Do n't KnowJSのKyleSimpson非同期機能:非同期とパフォーマンス

分類Dev

JavaScriptは非同期であり、マルチスレッドと同等のものを待ちますか?

分類Dev

Deferred <T>を返す非同期関数内で遅延する方法

分類Dev

Expressで非同期はどのように機能しますか?

Related 関連記事

  1. 1

    IQueryableとIQueryable <T>は非同期ですか?

  2. 2

    なぜ非同期関数よりも非同期関数なのか?

  3. 3

    TypescriptにReturnType <T>のようなArgumentsType <T>はありますか?

  4. 4

    .NET 4.5の不完全な非同期タスクにはどのような影響がありますか?

  5. 5

    C#非同期メソッドの戻り型をTask <T>またはvoid以外のものにすることは可能ですか?

  6. 6

    Process.Startに相当する非同期のものはありますか?

  7. 7

    非同期メソッドの戻り値の型は、void、TaskまたはTask <T>である必要があります

  8. 8

    多数のPythonリクエストを非同期で実行する最も簡単な方法はありますか?

  9. 9

    ApacheのようなWebサーバーはどのように非同期で動作しますか?djangoにも相対的なロジックがありますか?

  10. 10

    非同期Task <T>メソッドを同期的に実行するにはどうすればよいですか?

  11. 11

    どのように非同期待機を使用する必要がありますか?

  12. 12

    非非同期/待機コードでのAsyncLocal <T>の効果は何ですか?

  13. 13

    async / awaitなしでTask <T>を非同期的に待機します

  14. 14

    DataGridに表されていないObservableCollection <T>の非同期変更

  15. 15

    これは本当に非同期ですか?IEnumerableを<T>拡張

  16. 16

    非同期コードが同期よりもはるかに高速であると見なされるのはなぜですか?

  17. 17

    非同期コードはhaskellの同期バージョンよりも実行が遅くなります

  18. 18

    Task <T>なしのタスクの戻り値(非同期/待機パターン)

  19. 19

    非同期コードが同期よりも時間がかかる可能性はありますか?

  20. 20

    どのようにJavaの非同期に動作しますか?非同期メソッドは非同期で実行していないようです

  21. 21

    非同期メソッドのシグネチャエラー。void、Task、またはTask <T>を返す必要があります

  22. 22

    非同期は同期の15倍の時間がかかります

  23. 23

    非同期は延期よりも優れていますか?

  24. 24

    非同期データを処理するためのより良い、より短い方法はありますか?

  25. 25

    非同期タスクを使用したBlockingCollection

  26. 26

    You Do n't KnowJSのKyleSimpson非同期機能:非同期とパフォーマンス

  27. 27

    JavaScriptは非同期であり、マルチスレッドと同等のものを待ちますか?

  28. 28

    Deferred <T>を返す非同期関数内で遅延する方法

  29. 29

    Expressで非同期はどのように機能しますか?

ホットタグ

アーカイブ