13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

C#多线程,论多核时代爱恨情仇

博客前言

为什么要学习多线程?

  • 2010年1月21日是10年某市公务员考试的报名截止日。因从下午2点开始,用于报名的北京市人事考试网瘫痪,原定于昨天下午5点截止的报名时间延迟至今天上午11点。

  • 2011年3月11日下午5时(北京时间12日早9点),苹果发布新一代的平板电脑产品iPad 2,配备了A5.1Ghz双核处理器,这寓意着平板电脑和笔记本一同进入"多核时代"。

  • 同年6月18日,国内著名B2C---京东在周年庆典之际举行了"隆重"的大规模的促销活动,抢购随之而来,订单挤爆京东 限时达临时取消。 昨天有消费者反映,由于点击量过大,18日早上京东商城网站一度瘫痪。一位消费者说:“18日凌晨1点开始就登不上京东商城。”刘强东也表示:由于流量多 次超过4个G,服务器运行缓慢。 昨天,京东商城官网发布公告称,“‘618’活动异常火爆且用户下单速度空前,致使部分用户已购订单显示出现延迟,用户在一段时间内无法在‘我的京东’中 查询到自己的订单。目前已购订单显示延迟的问题已得到有效解决,对此给您带来的不便,我们深表歉意。”

  • 2015年05月05日登录风信子网上商城发现,首页除了广告和相关消息外,只有“注册账号获取更多优惠”这唯一一个按钮,没有商品展示,没有产 品搜索,不能网上下单,甚至连进入商城的按钮也没有。风信子南沙跨境商品直购体验中心相关负责人表示,这主要是因为预约的人数太多,截至五一,预约人数已 超过十万,太多人频繁登陆,导致网店服务器瘫痪,目前技术人员还在努力维修中。该负责人介绍,体验中心的网站目前正在调试,“网站目前的作用主要是给市民 预约和提前注册,通过网络注册的市民不用在现场验证身份证等信息,可以提高购买效率。”

下面通过一些实例来认识一下多线程和让大家知道为什么要学习多线程。

写在前面

老板只有两种,好的和坏的。好的老板只跟你谈钱,坏的老板只跟你谈理想。

v模拟场景

假设后台有个monitor时事的在监测订单,且可以发现订单然后处理订单,每次(1次/S)可以处理1千个订单,需要向仓库系统发出指令,让他们负责配送发货。那么我们来写一个EmulationSystem(模拟系统)

JobHelper因为我们只是为了模拟一个环境,所以它是这样的。

  
 
  1. //------------------------------------------------------------------------------ 
  2. //  
  3. //     Copyright (C) 2015-2016 All Rights Reserved 
  4. //     原博文地址: http://www.cnblogs.com/toutou/ 
  5. //   
  6. //------------------------------------------------------------------------------ 
  7. namespace CNBlogs.Common.Shared 
  8.     using System.Threading; 
  9.     ///  
  10.     /// Job helper 
  11.     ///  
  12.     public class JobHelper 
  13.     { 
  14.         ///  
  15.     /// Get job total count 
  16.         ///  
  17.     ///  
  18.     public int GetJobCount() 
  19.         { 
  20.             // 我们的侧重点是多线程,所以我们就模拟每次有1千个订单,而模拟,所以我们不关心其他的。只要订单数量。 
  21.     return 1000; 
  22.         } 
  23.         ///  
  24.     /// Submit job 
  25.         ///  
  26.     /// For job id 
  27.     /// Submit job status 
  28.     public bool SubmitJob(int jobId) 
  29.         { 
  30.             // 假设针对每个订单向后台发送任务需要1秒,而且每个订单都能成功发送 
  31.             Thread.Sleep(1000); 
  32.             return true; 
  33.         } 
  34.     } 

背景我们也交待完了,现在需要来得到这些订单信息以后,向仓库submit这些订单。

v实战演习

根据这种背景,我们可以有很多处理的办法。

v博客总结

多线程路还很长...


文章标题:C#多线程,论多核时代爱恨情仇
URL分享:http://cdbrznjsb.com/article/ccsgjge.html

其他资讯

让你的专属顾问为你服务