using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;namespace TestWait
{class Program{public static Queue<Proccess> QueueMessage = new Queue<Proccess>();static int count = 15;//只有15张票static void Main(string[] args){StartProccess();//模拟并发 20个人同时买票for (int i = 0; i < 20; i++){ThreadPool.QueueUserWorkItem(new WaitCallback ((o)=>{string index = (string)o;Bay(index);}),"客户端"+i);}Console.ReadKey();}//购买服务static bool Bay(String val){Proccess p = new Proccess();p.val = val;p.ManualReset = new ManualResetEvent(false);//lock (QueueMessage){QueueMessage.Enqueue(p);//消息入列Console.WriteLine("入列:" + val);}WaitHandle.WaitAll(new WaitHandle[] { p.ManualReset });//等待处理完成return p.Result;}//启动处理线程static void StartProccess(){ThreadPool.QueueUserWorkItem(new WaitCallback(ProccessThread));}//处理线程static void ProccessThread(Object obj){while (true){if (QueueMessage.Count > 0){Proccess message = QueueMessage.Dequeue();if (count <= 0){message.Result = false;Console.WriteLine("处理失败:" + message.val);}else{message.Result = true;Console.WriteLine("处理成功:" + message.val);}count--;if (message.ManualReset != null)message.ManualReset.Set();}else{//如果没有消息 停止3sThread.Sleep(3000);}}}}class Proccess{public ManualResetEvent ManualReset{get;set;}public bool Result{get;set;}public String val{get;set;}}
}

  

转载于:https://www.cnblogs.com/yechangzhong-826217795/p/10395371.html

C#排队处理DEMO相关推荐

  1. 门急诊排队叫号系统demo的基本实现

    本文由Markdown语法编辑器编辑完成. 1. 门诊排队叫号系统 2. 基于QT实现UDP协议的发送 //.h,头文件声明与UDP相关的类的头文件.#include <QHostAddress ...

  2. 万物皆可JOJO:这个GAN直接让马斯克不做人啦 !Demo在线可玩!

    来源:量子位 这下真的是万物皆可JOJO化了! 本来就神采飞扬的马斯克,下一刻更是仿佛要直接"我不做人啦!" 世界名画蒙娜丽莎神秘优雅的微笑,似乎也变得JO灼了起来-- 再来个同一 ...

  3. iOS设计模式四部曲(三):行为型模式 内附Demo

    本篇是四部曲的第三篇,第一篇请点这里iOS设计模式四部曲(一):创建型模式,第二篇请点击这里iOS设计模式四部曲(二):结构型模式.由于个人能力有限,文中难免有一些遗漏或者错误,请各位看官不吝赐教!谢 ...

  4. 万物皆可JOJO:这个GAN直接让马斯克不做人啦 | Demo可玩

    博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 这下真的是万物皆可JOJO化了! 本来就神采飞扬的马斯克,下一刻更是仿佛要直接"我不做人啦!" 世界名画蒙娜丽莎神秘优雅 ...

  5. 如何在队列排队之前让ThreadPoolExecutor将线程增加到最大数量

    public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,Bloc ...

  6. Apache DolphinScheduler征稿 — 小Demo轻松入门DolphinSchedule大数据调度工具

    文章目录 官方文档 | [GitHub源码](https://github.com/apache/dolphinscheduler) 一.从实际需求入手,我们为何要选择使用DolphinSchched ...

  7. 游戏服务器排队系统,游戏服务器排队功能

    游戏服务器排队功能 内容精选 换一换 座席已签入座席登录后,获取当前座席已签入技能队列上的排队人数.设置成"GET".该接口仅支持GET方法,不支持PUT.POST和DELETE等 ...

  8. 透过实例demo带你认识gRPC

    本文分享自华为云社区<gRPC介绍以及spring demo构架展示>,作者:gentle_zhou. gRPC,即google Remote Procedure Call Protoco ...

  9. Android中的动画详析-kotlin的demo

    Android中的动画可以分为三种,View动画,帧动画,以及属性动画,实际上帧动画也是View动画的一种,只不过二者表现形式不同,View动画是通过不断地对场景里的动画做图像转换从而产生动画效果是一 ...

最新文章

  1. 4模型导出_项目模型规范总结 游戏模型制作的注意事项
  2. 一,初次接触html+css需要注意的小问题
  3. 自动驾驶的一些专业术语
  4. Android 封装一个通用的PopupWindow
  5. FastJSON的依赖
  6. Django抛错不存在(DoesNotExist)
  7. 实践中学到的最重要的机器学习经验!
  8. 使用 TRESTClient 與 TRESTRequest 作為 HTTP Client 之二 (POST 檔案)
  9. linux回收内存的方法,linux释放内存的方法
  10. Chrome的历史版本下载
  11. windows 一键切换ip dns脚本
  12. 你的sd卡到底有多快? 256G SD 卡实际速度测试
  13. 从零搭建一个vue项目
  14. linux网卡驱动如何安装,linux下网卡驱动安装全过程
  15. C++使用ADO连接Access数据库方法
  16. DP1.2 硬件规范——硬件/Lenovo
  17. 浅识WebGL和Three.js
  18. oracle dba_waiters中的lockid是什么,SQL Server和Oracle中的锁和死锁(三)
  19. js 截取指定字符前的字符
  20. 如何使用开源工具构建您的网络安全工具包

热门文章

  1. 关键词词云怎么做_制作CVPR 热词云(并爬取pdf地址 名称)
  2. 中文表示什么_越南水果摊贴出中文标语,看清文字内容后,中国游客:不再吃了...
  3. 开发web前端_移动前端开发和web前端开发的区别?
  4. 如何使用html和css,如何使用html和css制作这个div?
  5. java文件批量重命名6,批量重命名文件DOS脚本
  6. linux环境OpenRASP使用教程,OpenRASP技术分析
  7. python3字符串操作_python3-字符串操作
  8. 电脑仙人掌机器人作文_【中考一等作文2篇】致敬奋斗的时光父爱如根般深沉...
  9. python 删除文件、目录_python实现删除文件与目录的方法
  10. 计算机网络划分子网_电网小课堂|通信类:子网划分技术