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(); } } } }
开源WinMD5中的MTQueue类
最新推荐文章于 2024-08-24 08:17:29 发布