没有合适的资源?快使用搜索试试~ 我知道了~
遇到一个多线程任务优化的问题,现在解决了,分享如下。 假设有四个任务: 任务1:登陆验证(CheckUser) 任务2:验证成功后从Web服务获取数据(GetDataFromWeb) 任务3:验证成功后从数据库获取数据(GetDatFromDb) 任务4:使用2、3的数据执行一个方法 (StartProcess) 一个比较笨的方法(本人最开始的方法,记为方法1)是直接开启一个线程,按照顺序依次执行四个任务: 代码如下:new Thread(delegate { CheckUser();
资源推荐
资源详情
资源评论






























c#并行任务多种优化方案分享并行任务多种优化方案分享(异步委托异步委托)
遇到一个多线程任务优化的问题,现在解决了,分享如下。
假设有四个任务:
任务1:登陆验证(CheckUser)
任务2:验证成功后从Web服务获取数据(GetDataFromWeb)
任务3:验证成功后从数据库获取数据(GetDatFromDb)
任务4:使用2、3的数据执行一个方法 (StartProcess)
一个比较笨的方法(本人最开始的方法,记为方法1)是直接开启一个线程,按照顺序依次执行四个任务:
代码如下:
new Thread(delegate
{
CheckUser();
GetDatFromDb();//从数据库获取数据
GetDataFromWeb();//web服务获取数据
StartProcess();//执行4
}).Start();
但是仔细分析需求我们会发现,任务2和任务3并没有先后区别,事实上两者并无关联,只不过任务4的执行需要任务2和3都已
完成作为条件,所以我们可以再开两个线程用于执行任务2和任务3,当两者都执行完毕之后,执行任务4。
在这里使用了两个全局变量用于表示任务2和任务3的状态。用三个线程分别执行任务2、3、4,其中任务4一直在循环监听全
局变量的状态,确保在2、3都执行完毕后才执行。
这记为方法2:
代码如下:
private static volatile bool _m2;//任务2的标志位
private static volatile bool _m3;//任务3的标志位
private static void Main(string[] args)
{
new Thread(delegate
{
CheckUser();
new Thread(delegate
{
GetDatFromDb();//从数据库获取数据
_m2 = true;//标志位置为true
}).Start();
new Thread(delegate
{
GetDataFromWeb();//web服务获取数据
资源评论


weixin_38730977
- 粉丝: 6
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 工程管理策划书制度(附表格).doc
- 混凝土结构同条件养护试块留置方案.doc
- 钢结构加工方案.doc
- 机电安装方案模板.doc
- 《使用Flash制作简单的位移动画》的教学设计方案.doc
- 中铁某公司项目责任成本管理工作检查细则.doc
- 产品经销合同(三方).doc
- 基于Hadoop的海量数据处理平台的架构与研究.docx
- 探索创新载体在高校网络党建中的应用研究.docx
- 污染土壤的环境修复技术.ppt
- 函数应用之逻辑函数-secret.docx
- 工程量清单、标底编制作业指导书.docx
- 计算预埋地脚螺栓资料.doc
- 轨道交通行业解决方案.ppt
- [广东]干煤棚网架工程满堂脚手架拆除方案.doc
- 质量成本分析报告表.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
