はじめに マルチスレッドでの非同期データ受け渡しライブラリのSystem.Threading.Channels(corefxlabにあったころはSystem.Threading.Tasks.Channels)が、corefxに統合され、この度4.5.0-rc1としてリリースされたので、 さすがに大きな変更はないだろうと踏んで使い方などを書く。 参考: corefxlabにあったころの記事 何ができるようになるか 非同期でのプロデューサー・コンシューマーパターンを作るのがより容易になる。 特徴としては以下のようになる 順序は必ずFIFO(先入れ先出し) 読み:書き=M:1、1:N、M:Nのパターンに対応 asyncと親和的な設計 パフォーマンスに配慮 netcoreapp2.1では更に特化実装で速い 注意: 現在netcoreapp2.1で、ConcurrentQueueが特定のケースでne
![System.Threading.Channelsを使う - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/cb4903ffd011e16e80a45c81d62fb3e0675feed8/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9U3lzdGVtLlRocmVhZGluZy5DaGFubmVscyVFMyU4MiU5MiVFNCVCRCVCRiVFMyU4MSU4NiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9ZjljZDAxZDZlZGZmY2Y1YWQ4Zjg0MDk1MjZhYjk1NmI%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBza2l0b3k0MzIxJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz01YTFhYjdjMTU5MGFkNGVjZjUxYWFmM2VkOGFiZDFjMA%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Df795122aad1d27c799f4891b1fb8173d)