您的位置:首页 > 产品设计 > UI/UE

(C#)使用队列(Queue)解决简单的并发问题

2015-07-20 00:00 1291 查看
有一个场景:一个抢购的项目,假设有5件商品,谁先抢到谁可以买,但是如果此时此刻(这里的此时此刻假设是相同的时间),有100人去抢这个商品,如果使用平时的方法会出现什么情况呢?你懂的,这里所说是就是有关并发的问题。

平时我们去超市购物去结账的时候就是排队,这里我们先让抢购人排好队,按时间,谁先点击的抢购按钮谁就排在前面,这样就形成了一个队列,然后我们再对这个队列处理,这样就不会出现并发的问题了。(至少可以处理这样简单的并发,这里不讨论太复杂的并发)

案例:

要求:有一个发布文章的接口,每发布一篇文章,调用一下接口。(这里不用批量发布,为了讲解这个)

建立一个这样的处理程序类,BusinessInfoHelper.cs

[csharp] view plaincopy
namespace MyNameSpace

{
//队列临时类
public class QueueInfo
{
public string medias { get; set; }
public string proids { get; set; }
public string host { get; set; }
public string userid { get; set; }
public string feedid { get; set; }
}

public class BusinessInfoHelper
{
#region 解决发布时含有优质媒体时,前台页面卡住的现象
//原理:利用生产者消费者模式进行入列出列操作

public readonly static BusinessInfoHelper Instance = new BusinessInfoHelper();
private BusinessInfoHelper()
{ }

private Queue<QueueInfo> ListQueue = new Queue<QueueInfo>();

public void AddQueue(string medias, string proids, string host, string userid, string feedid) //入列
{
QueueInfo queueinfo = new QueueInfo();

queueinfo.medias = medias;
queueinfo.proids = proids;
queueinfo.host = host;
queueinfo.userid = userid;
queueinfo.feedid = feedid;
ListQueue.Enqueue(queueinfo);
}

public void Start()//启动
{
Thread thread = new Thread(threadStart);
thread.IsBackground = true;
thread.Start();
}

private void threadStart()
{
while (true)
{
if (ListQueue.Count > 0)
{
try
{
ScanQueue();
}
catch (Exception ex)
{
LO_LogInfo.WLlog(ex.ToString());
}
}
else
{
//没有任务,休息3秒钟
Thread.Sleep(3000);
}
}
}

//要执行的方法
private void ScanQueue()
{
while (ListQueue.Count > 0)
{
try
{
//从队列中取出
QueueInfo queueinfo = ListQueue.Dequeue();

//取出的queueinfo就可以用了,里面有你要的东西
//以下就是处理程序了
//。。。。。。

}
catch (Exception ex)
{
throw;
}
}
}

#endregion
}
}

以上页面写好后,在程序开始运行时就得启动这个线程去不停的处理任务,那么我们在Global的Application_Start里可以这样写:

[csharp] view plaincopy
//启动发布优质媒体程序
MyNameSpace.BusinessInfoHelper.Instance.Start();

有一个问题出来了,如果我处理完队列中的一条记录后,想返回这条记录的ID,这个程序好像不能完成,我就使用了另一个方法 Lock方法 ,把方法锁定,具体的如下,

在页面中定义全局的锁:

[csharp] view plaincopy
private static object lockObject= new Object();

在方法 中这样调用:

[csharp] view plaincopy
lock(lockObject)

{

//........

}

如果不使用第二种方法的全局锁,不知各位大侠有没有好的解决办法,如果有,可以跟贴,非常感谢!

九江找富婆包养男人 天津找富婆包养男人 山西找富婆包养男人 辽宁找富婆包养男人 黑龙江找富婆包养男人 安徽找富婆包养男人 江西找富婆包养男人 河南找富婆包养男人 湖南找富婆包养男人 广西找富婆包养男人 贵州找富婆包养男人 西藏找富婆包养男人 甘肃找富婆包养男人 宁夏找富婆包养男人 东城找富婆包养男人 朝阳找富婆包养男人 石景山找富婆包养男人 门头沟找富婆包养男人 房山找富婆包养男人 通州找富婆包养男人 顺义找富婆包养男人 蓟县找富婆包养男人 大兴找富婆包养男人 怀柔找富婆包养男人 密云找富婆包养男人 南开找富婆包养男人 河北找富婆包养男人 东丽找富婆包养男人 津南找富婆包养男人 武清找富婆包养男人 杭州找富婆包养男人 温州找富婆包养男人 嘉兴找富婆包养男人 湖州找富婆包养男人 金华找富婆包养男人 衢州找富婆包养男人 丽水找富婆包养男人 芜湖找富婆包养男人 淮南找富婆包养男人 淮北找富婆包养男人 安庆找富婆包养男人 滁州找富婆包养男人 宿州找富婆包养男人 宣城找富婆包养男人 莆田找富婆包养男人 泉州找富婆包养男人 常州找富婆包养男人 苏州找富婆包养男人 南通找富婆包养男人 淮安找富婆包养男人 扬州找富婆包养男人 宿迁找富婆包养男人 韶关找富婆包养男人 珠海找富婆包养男人 佛山找富婆包养男人 湛江找富婆包养男人 肇庆找富婆包养男人 梅州找富婆包养男人 河源找富婆包养男人 清远找富婆包养男人 中山找富婆包养男人 潮州找富婆包养男人 云浮找富婆包养男人 新余找富婆包养男人 鹰潭找富婆包养男人 吉安找富婆包养男人 抚州找富婆包养男人 上饶找富婆包养男人 济南找富婆包养男人 淄博找富婆包养男人 东营找富婆包养男人 济宁找富婆包养男人 泰安找富婆包养男人 日照找富婆包养男人 临沂找富婆包养男人 聊城找富婆包养男人 菏泽找富婆包养男人 开封找富婆包养男人 平顶山找富婆包养男人 鹤壁找富婆包养男人 新乡找富婆包养男人 濮阳找富婆包养男人 漯河找富婆包养男人 南阳找富婆包养男人 信阳找富婆包养男人 驻马店找富婆包养男人 武汉找富婆包养男人 黄石找富婆包养男人 襄阳找富婆包养男人 鄂州找富婆包养男人 孝感找富婆包养男人 黄冈找富婆包养男人 随州找富婆包养男人 恩施找富婆包养男人 仙桃找富婆包养男人 潜江找富婆包养男人 长沙找富婆包养男人 株洲找富婆包养男人 衡阳找富婆包养男人 常德找富婆包养男人 张家界找富婆包养男人 郴州找富婆包养男人 怀化找富婆包养男人 娄底找富婆包养男人 哈尔滨找富婆包养男人 鸡西找富婆包养男人 双鸭山找富婆包养男人 伊春找富婆包养男人 七台河找富婆包养男人 卢湾找富婆包养男人 长宁找富婆包养男人 普陀找富婆包养男人 虹口找富婆包养男人 南京找富婆包养男人 涪陵找富婆包养男人 大渡口找富婆包养男人 沙坪坝找富婆包养男人 南岸找富婆包养男人 万盛找富婆包养男人 渝北找富婆包养男人 长寿找富婆包养男人 潼南找富婆包养男人 大足找富婆包养男人 璧山找富婆包养男人 城口找富婆包养男人 垫江找富婆包养男人 忠县找富婆包养男人 云阳找富婆包养男人 巫山找富婆包养男人 黔江找富婆包养男人 彭水找富婆包养男人 合川找富婆包养男人 南川找富婆包养男人 自贡找富婆包养男人 泸州找富婆包养男人 绵阳找富婆包养男人 遂宁找富婆包养男人 乐山找富婆包养男人 南充找富婆包养男人 宜宾找富婆包养男人 达州找富婆包养男人 巴中找富婆包养男人 甘孜找富婆包养男人 贵阳找富婆包养男人 遵义找富婆包养男人 铜仁找富婆包养男人 毕节找富婆包养男人 黔南找富婆包养男人 曲靖找富婆包养男人 保山找富婆包养男人 丽江找富婆包养男人 临沧找富婆包养男人 红河找富婆包养男人 西双版纳找富婆包养男人 德宏找富婆包养男人 迪庆找富婆包养男人 山南找富婆包养男人 那曲找富婆包养男人 林芝找富婆包养男人 铜川找富婆包养男人 咸阳找富婆包养男人 延安找富婆包养男人 榆林找富婆包养男人 嘉峪关找富婆包养男人 白银找富婆包养男人 武威找富婆包养男人 平凉找富婆包养男人 庆阳找富婆包养男人 陇南找富婆包养男人 甘南找富婆包养男人 海东找富婆包养男人 黄南找富婆包养男人 果洛找富婆包养男人 海西找富婆包养男人 唐山找富婆包养男人 邢台找富婆包养男人 张家口找富婆包养男人 沧州找富婆包养男人 衡水找富婆包养男人 大同找富婆包养男人 长治找富婆包养男人 朔州找富婆包养男人 运城找富婆包养男人 临汾找富婆包养男人 呼和浩特找富婆包养男人 乌海找富婆包养男人 通辽找富婆包养男人 呼伦贝尔找富婆包养男人 乌兰察布找富婆包养男人 锡林郭勒找富婆包养男人 沈阳找富婆包养男人 鞍山找富婆包养男人 本溪找富婆包养男人 锦州找富婆包养男人 卓新找富婆包养男人 盘锦找富婆包养男人 葫芦岛找富婆包养男人 四平找富婆包养男人 通化找富婆包养男人 松原找富婆包养男人 延边找富婆包养男人 闵行找富婆包养男人 嘉定找富婆包养男人 金山找富婆包养男人 青浦找富婆包养男人 崇明找富婆包养男人 无锡找富婆包养男人 常州找富婆包养男人 南通找富婆包养男人 秀山找富婆包养男人 酉阳找富婆包养男人 江津找富婆包养男人 两江新区找富婆包养男人 商洛找富婆包养男人 龙岩找富婆包养男人 宁德找富婆包养男人 德令哈找富婆包养男人 南汇找富婆包养男人 九华山找富婆包养男人 武夷山找富婆包养男人 武都找富婆包养男人 英德找富婆包养男人 增城找富婆包养男人 都匀找富婆包养男人 兴义找富婆包养男人 玉屏找富婆包养男人 丰润找富婆包养男人 北安找富婆包养男人 潢川找富婆包养男人 襄樊找富婆包养男人 吉首找富婆包养男人 海门找富婆包养男人 江阴找富婆包养男人 仪征找富婆包养男人 太仓找富婆包养男人 启东找富婆包养男人 井冈山找富婆包养男人 白山找富婆包养男人 海河找富婆包养男人 阿拉善盟找富婆包养男人 海拉尔找富婆包养男人 临河找富婆包养男人 秦安找富婆包养男人 蓬莱找富婆包养男人 侯马找富婆包养男人 宁武找富婆包养男人 榆次找富婆包养男人 绥德找富婆包养男人 西昌找富婆包养男人 唐定找富婆包养男人 内蒙古找富婆包养男人 上海找富婆包养男人 福建找富婆包养男人 山东找富婆包养男人 广东找富婆包养男人 四川找富婆包养男人 陕西找富婆包养男人 西城找富婆包养男人 海淀找富婆包养男人 昌平找富婆包养男人
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: