C# Blocking Queue
20
Dec/090
Dec/090
If you’re writing a threaded application in C# and you need to wait until a resource becomes available, you can use this class. Very handy for producer/consumer scenarios.
public class BlockingQueue<T>
{
Queue<T> que = new Queue<T>();
Semaphore sem = new Semaphore(0, Int32.MaxValue);
public void Enqueue(T item)
{
lock (que)
{
que.Enqueue(item);
}
sem.Release();
}
public T Dequeue()
{
sem.WaitOne();
lock (que)
{
return que.Dequeue();
}
}
}
{
Queue<T> que = new Queue<T>();
Semaphore sem = new Semaphore(0, Int32.MaxValue);
public void Enqueue(T item)
{
lock (que)
{
que.Enqueue(item);
}
sem.Release();
}
public T Dequeue()
{
sem.WaitOne();
lock (que)
{
return que.Dequeue();
}
}
}
Comments (0)
Trackbacks (0) ( subscribe to comments on this post )
No comments yet.
Leave a comment
No trackbacks yet.