当前位置:编程学习 > C#/ASP.NET >>

一个C#多线程的工作队列

 自己写了一个多线程的工作队列,能够实现对队列中对象的自动处理。多线程添加元素到队列中,队列根据绑定

的事件进行自动处理,可以设置WorkSequential属性来实现对队列处理的单线程(严格顺序处理)或者多线程处理(循序出队,但是

多线程处理,不保证对队列元素的处理顺利)的选择。

 

  源码:

 

\代码
/***********多线程的工作队列***************
* 此工作队列保证线程安全性
*
*
*
*
* *******/
namespace WorkQueue
{
using System.Collections.Generic;
using System;
using System.Threading;

public delegate void UserWorkEventHandler<T>(object sender, WorkQueue<T>.EnqueueEventArgs e);
public class WorkQueue<T>
{
private bool IsWorking; //表明处理线程是否正在工作
private object lockIsWorking = new object();//对IsWorking的同步对象


private Queue<T> queue; //实际的队列
private object lockObj = new object(); //队列同步对象





/// <summary>
/// 绑定用户需要对队列中的item对象
/// 施加的操作的事件
/// </summary>
public event UserWorkEventHandler<T> UserWork;

public WorkQueue(int n)
{
queue = new Queue<T>(n);
}

public WorkQueue()
{
queue = new Queue<T>();
}

/// <summary>
/// 谨慎使用此函数,
/// 只保证此瞬间,队列值为空
/// </summary>
/// <returns></returns>
public bool IsEmpty()
{
lock (lockObj)
{
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,