如何重写到 Task<T>为了性能提升?

编程入门 行业动态 更新时间:2024-10-24 14:18:58
本文介绍了如何重写到 Task<T>为了性能提升?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有以下代码:

static BlockingCollection<SimpleObject> sendQueue = new BlockingCollection<SimpleObject>(); static public void Insert(string key, T value) { SimpleObject simpleObject = new SimpleObject {Key = key, Value = value}; sendQueue.Add(simpleObject); var data = sendQueue.Take(); //this blocks if there are no items in the queue. ThreadPool.QueueUserWorkItem(state => { //Do ASYNC stuff with data here - threadsafe }); }

我如何编写它以使用 T 的任务并仍然确保它是线程安全且快速的?或者有更好/更快的方法吗?

How can I write this to use Task of T and still make sure it's threadsafe and fast? Or is there a better/faster way?

推荐答案

我认为你只需要 2 个线程/任务.1 个生产者和 1 个消费者.

I think you only need 2 threads/tasks. 1 Producer and 1 Consumer.

//Producer Task.Factory.StartNew(() => { for(int i=0;i<100000000;i++) { sendQueue.Add(new SimpleObject() { Key = "", Value = "" }); } sendQueue.CompleteAdding(); }); //Consumer Task.Factory.StartNew(() => { foreach(var so in sendQueue.GetConsumingEnumerable()) { //do something } });

更多推荐

如何重写到 Task&lt;T&gt;为了性能提升?

本文发布于:2023-11-16 09:39:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1603119.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:写到   性能   Task   amp   lt

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!