开源WinMD5中的MTQueue类

来源:互联网 发布:专业开淘宝店 编辑:程序博客网 时间:2024/05/21 21:49
using System; using System.Collections; using System.Threading; using System.Collections.Generic; namespace WinMD5 { public abstract class QueueItemBase { } /** A Thread safe wrapper * for the Queue class. */ public class MTQueue { protected Queue q; public MTQueue() { q = new Queue(); } public QueueItemBase Get() { lock (q) { while (true) { if (q.Count>0) return q.Dequeue(); Monitor.Wait(q); } } } /* * This would be a handy method... public void PutFront(object o) { lock (q) { q.Enqueue(o); Monitor.Pulse(q); } } */ public void Put(QueueItemBase o) { lock (q) { q.Enqueue(o); Monitor.Pulse(q); } } public int Count() { lock (q) { return q.Count; } } public void Clear() { lock (q) { q.Clear(); } } } }
原创粉丝点击