启用队列< T>并发

编程入门 行业动态 更新时间:2024-10-21 11:47:21
本文介绍了启用队列< T>并发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个previous question这是我提供我的解决方案;但是,我没有获得 ConcurrentQueue< T> ,因为我在NET 3.5的。我需要问答LT; T> 允许并发。我读这问题,似乎present如果一个项目出现问题是的没有的队列和螺纹方法试图离队的项目。

I have a previous question which I have provided my solution; however, I don't have access to ConcurrentQueue<T> since I am on .Net 3.5. I need Queue<T> to allow concurrency. I read this question and seems to present a problem if an item is not in the queue and the threaded method tries to dequeue an item.

我现在的任务就是确定我是否可以得出自己的并发Queue类。这就是我想出了:

My task now is to determine whether I can derive my own concurrent Queue class. This is what I came up with:

public sealed class ConcurrentQueue : Queue<DataTable> { public event EventHandler<TableQueuedEventArgs> TableQueued; private ICollection que; new public void Enqueue(DataTable Table) { lock (que.SyncRoot) { base.Enqueue(Table); } OnTableQueued(new TableQueuedEventArgs(Dequeue())); } // this is where I think I will have a problem... new public DataTable Dequeue() { DataTable table; lock (que.SyncRoot) { table = base.Dequeue(); } return table; } public void OnTableQueued(TableQueuedEventArgs table) { EventHandler<TableQueuedEventArgs> handler = TableQueued; if (handler != null) { handler(this, table); } } }

所以,当一个DataTable排队,EventArgs的将通过一个出列的表到事件订户。这是否会实现我提供一个线程安全的队列?

So, when a DataTable is queued, the EventArgs will pass a dequeued table to the event subscriber. Will this implementation provide me with a thread-safe Queue?

推荐答案

你出队的项目,如你入队他们。 您需要使用您的参数,以提高该事件。

You're dequeueing your items as you enqueue them. You need to raise the event using your parameter.

无论它实际上是线程安全取决于你如何使用它。 如果你检查计数或检查的空虚,它不是线程安全的,不能轻易进行线程安全的。 如果不这样做,你也许可以用更简单的东西比一个队列。

Whether it's actually thread-safe depends on how you use it. If you ever check the Count or check for emptiness, it's not threadsafe and cannot easily be made threadsafe. If you don't, you can probably use something simpler than a queue.

更多推荐

启用队列&LT; T&GT;并发

本文发布于:2023-06-07 15:18:22,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/568509.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:队列   LT   GT

发布评论

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

>www.elefans.com

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