c#利用异步方法去模拟多线程处理业务
一个巧妙的设计
原理:利用async 标识方法执行异步处理
List<long> listIds = new List<long>();//业务任务:假设处理这个列表的任务
object lockObj = new object();//锁对象
bool stopFlag = false;//停止标识 /// <summary>
/// 异步任务持续工作直到stopFlag=true或者任务完成(没有需要处理的业务)
/// </summary>
/// <param name="taskId">任务ID</param>
async void test(int taskId)
{
if (stopFlag)
{
return;
}
long id = 0;
lock (lockObj)
{
if (listIds.Count <= 0)
{
return;
}
id = listIds[0];
listIds.RemoveAt(0);
}
Debug.Print("task"+ taskId+": " +id);
await Task.Delay(2000);
test(taskId);
} /// <summary>
/// 测试5个任务循环处理
/// </summary>
void testTaskRun() {
//假设初始化业务任务列表
for (int i = 0; i <= 100; i++)
{
listIds.Add(i);
}
//例如搞5个任务去执行(类似启动5个线程去搞)
test(1);
test(2);
test(3);
test(4);
test(5); }
c#利用异步方法去模拟多线程处理业务的更多相关文章
- Android手机上,利用bat脚本模拟用户操作
………… 那么你就可以来看看这篇帖子了. 言归正传 利用bat脚本模拟用户操作,需要用到两点: ①就是adb命令了,adb命令可以用来模拟用户在手机上的操作 ②bat语言,就是批处理语言,主要用来进行 ...
- ExtJS要利用观察者模式 去实现自定义的事件
// 要利用观察者模式 去实现自定义的事件 //1:由于浏览器他自己能定义内置的事件(click/blur...) // 我们也应该有一个类似于浏览器这样的类,这个类 自己去内部定义一些事件(自定义事 ...
- 利用Telnet来模拟Http请求 有GET和POST两种
利用Telnet来模拟Http请求---访问百度. 1.打开"运行"->cmd进入命令环境: 2.输入"telnet www.baidu.c ...
- 学习Hadoop+Spark大数据巨量分析与机器学习整合开发-windows利用虚拟机实现模拟多节点集群构建
记录学习<Hadoop+Spark大数据巨量分析与机器学习整合开发>这本书. 第五章 Hadoop Multi Node Cluster windows利用虚拟机实现模拟多节点集群构建 5 ...
- 利用系统函数模拟实现nginx 系统脚本启动的特殊颜色专业效果
利用系统函数模拟实现nginx 系统脚本启动的特殊颜色专业效果/etc/init.d/nginxd {start/stop/restart/reload}利用if语句实现: ============= ...
- fiddler学习总结--利用fiddler快速模拟mock
Mock的应用就是在测试接口的时候,去模拟我们想要的接口 1.创建一个txt文件,里面随意写一个json字符串,如图所示: 2.选择目标消息,并且点击“autoresponde”-->“add ...
- 如何利用 Chrome 来模拟移动网络来调试 FastAdmin 网站
如何利用 Chrome 来模拟移动网络来高度 FastAdmin 网站 因为目前大多数都在开发移动类的网页,所以客户端的速度下载速度要也考虑. 虽然都已经 4G 了,但还是要看看在网络质量很差的情况 ...
- 利用OSG实现模拟飞机尾迹-粒子系统
利用OSG实现模拟飞机尾迹-粒子系统 粒子系统简介: 粒子系统是用于不规则模糊物体建模及图像生成的一种方法. 粒子系统是一种过程模型,即利用各种计算过程生成模型各个体素 ...
- 利用lsof去查看Unix/Linux进程打开了哪些文件
利用lsof去查看Unix/Linux进程打开了哪些文件 今天用了一下lsof,发现这个linux的小工具,功能非常强大而且好用. 我们可以方便的用它查看应用程序进程打开了哪些文件或者对于特定的一个文 ...
- Spring练习,使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执行业务代码后释放资源,最后在控制台输出打印结果。
相关 知识 >>> 相关 练习 >>> 实现要求: 使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执 ...
随机推荐
- 安装了多个python版本指定pip安装目录
#检查库安装的目录import os import numpy as np import pandas as pd print(os.path.dirname(np.__file__)) print( ...
- 【VMware VCF】使用 Offline Bundle Transfer Utility(OBTU)配置 VCF 脱机库。
VMware Cloud Foundation 环境中,软件包仓库的来源支持两种方式,分别是 Online Depot 和 Offline Depot.第一种方式,是在 VCF 环境能够连接互联网的情 ...
- QT creator中cmake管理项目,如何引入外部库(引入Eigen库为例)
在Eigen的官网下载压缩包[点我进入] 解压到当前项目的根目录(当然你也可以自己选择目录) 在当前项目的CMakeLists.txt任意位置加入这句话include_directories(${CM ...
- 你的第一个Solana SPL
简介 TFT 你的第一个SPL The first token 技术栈和库 Rust Anchor框架 Typescript(测试) 开发环境和其它网络地址 DevNet: https://api.d ...
- 【2024.09.27】NOIP2024 赛前集训-刷题训练(3)
[2024.09.27]NOIP2024 赛前集训-刷题训练(3) NOIP2018 提高组 铺设道路 算法一:模拟正常人铺路的过程,每次找区间的最小值,最小值就是本次填的高度,由于出现了若干个0位置 ...
- 2.12 Linux两种远程管理工具(PuTTY和SecureCRT)
通过<Linux远程管理协议>一节可以知道,Linux远程管理服务器多基于 SSH 协议.本节给大家介绍 2 种常见的基于 SSH 协议的远程管理工具,分别是 PuTTY 和 Secure ...
- 2-2 C++变量
目录 2.2.1 变量定义:列表初始化(list initialization) 2.2.2 变量的定义与声明 C++分离式编译 定义与声明 2.2.3 C++变量命名 2.2.4 变量名的作用域(s ...
- .NET 9正式发布,亮点是.NET Aspire和AI
Microsoft 今天正式发布了 .NET 9,这是迄今为止最高效.最现代.最安全.最智能.性能最高的 .NET 版本.这是来自世界各地的数千名开发人员又一年努力的结果.此新版本包括数千项性能.安全 ...
- 3张大图剖析HttpClient和IHttpClientFactory在解决DNS解析问题上的殊途同归
在开发者便利度角度,我们很轻松地使用HttpClient对象发出HTTP请求,只需要关注应用层协议的BaseAddr.Url.ReqHeader.timeout. 实际在HttpClient在源码级别 ...
- DevEco Studio 实战第一节:字符串拼接与组件构建
DevEco Studio 实战第一节:字符串拼接与组件构建 引言 在现代软件开发中,TypeScript 提供了强类型的优势,而 DevEco Studio 作为华为推出的开发集成环境,提供了便捷的 ...