当前位置: 首页 > news >正文

京山网站设计公司网站的内部优化公司

京山网站设计公司,网站的内部优化公司,什么网站的注册是动态,做网站的是什么职业大家好#xff0c;我是全栈小5#xff0c;欢迎来到《小5讲堂之知识点实践序列》文章。 2024年第1篇文章#xff0c;此篇文章是C#知识点实践序列之Lock知识点#xff0c;博主能力有限#xff0c;理解水平有限#xff0c;若有不对之处望指正#xff01; 本篇验证Lock锁定代… 大家好我是全栈小5欢迎来到《小5讲堂之知识点实践序列》文章。 2024年第1篇文章此篇文章是C#知识点实践序列之Lock知识点博主能力有限理解水平有限若有不对之处望指正 本篇验证Lock锁定代码执行情况锁定外上下代码和锁定区域的代码执行情况。 目录 基本概念锁流程注意点 实践场景锁定代码块效果代码 疑问解答消息队列 常见报错 基本概念 在 C# 中锁lock是一种用于实现多线程同步的机制。 它可以用来确保在任何给定时间只有一个线程可以访问被锁定的代码块以避免数据竞争和并发访问的问题。 流程图 锁流程 1、创建一个共享资源在多个线程之间需要安全地访问该资源。 2、使用 lock 关键字来定义一个临界区域即需要同步的代码段将要访问共享资源的代码放置在该临界区域内。 3、在进入临界区域之前线程会尝试获取锁。如果锁已经被其他线程持有则当前线程会阻塞直到锁释放。 4、当线程得到锁之后它可以安全地访问临界区域内的代码执行完毕后释放锁以便其他线程可以继续执行。 注意点 1、锁定的对象应该是所有线程都可以访问到的共享对象常见的做法是使用一个私有变量作为锁对象。 2、锁的范围应该尽量小只锁定必要的代码区域以避免不必要的线程阻塞。 3、锁的使用应遵循一致的原则即在所有访问共享资源的地方都要使用同一个锁对象。这样可以确保所有线程都按顺序获取锁避免死锁的发生。 实践场景 通过实际例子来验证知识点的基本概念这样能够加深对知识点的理解只有对知识点的理解足够深才能更好的编写高质量代码和实现高效逻辑代码。 锁定代码块 以下是展示代码块被锁定但方法内其他代码仍然按顺序直接执行。 比如同时进行操作点击用户a、用户b、用户c、三个按钮然后都会调用同一个方法方法内只锁定统计数量并且锁定3秒其他代码没有锁定。 效果 从以下界面效果可以知道没有被锁定代码是会先执行然后锁定区域先执行用户a然后锁定3秒后再执行用户b依此类推。 代码 namespace XxxData {public partial class Form1 : Form{public Form1(){InitializeComponent();CheckForIllegalCrossThreadCalls false;}private void Form1_Load(object sender, EventArgs e){}private int visitorCount 0;private void TargetData(string user){txtInfo.AppendText(${user}{DateTime.Now.ToString(yyyy-MM-dd HH:mm:sss)}\r\n);lock (this){visitorCount 1;lbVisitorCount.Text $访问用户数{visitorCount};Thread.Sleep(3 * 1000);txtInfo.AppendText(${user}执行完毕{DateTime.Now.ToString(yyyy-MM-dd HH:mm:sss)}\r\n);}}private void btnA_Click(object sender, EventArgs e){Task.Run(() {TargetData(用户a);});}private void btnB_Click(object sender, EventArgs e){Task.Run(() {TargetData(用户b);});}private void btnC_Click(object sender, EventArgs e){Task.Run(() {TargetData(用户c);});}} }疑问解答 消息队列 Lock锁定代码块是否属于一种消息队列多个访问同时进来只能排队一个一个访问。A执行完Lock方法内的代码才允许下一个执行进来。 并不是C# 的 lock 关键字并不是一种消息队列。它是一种线程同步机制用于在多线程访问共享资源时确保同一时间只有一个线程可以进入被锁定的代码块。 当多个线程同时访问含有 lock 代码块的区域时只有一个线程能够获取到锁进入临界区域执行代码其余线程则被阻塞并排队等待锁的释放。一旦获取到锁的线程执行完毕释放锁后等待队列中的下一个线程会获取锁依此类推。 这种机制确保了同一时间只有一个线程能够访问共享资源避免了数据竞争和并发访问的问题。但请注意锁并不提供先后顺序的保证即不保证等待队列中线程按照某种特定的顺序获取锁。 消息队列是另一种机制用于线程或进程间的通信。它允许将消息从一个线程发送到另一个线程接收线程可以按照消息的先后顺序处理消息实现异步通信和任务分发。而 lock 关键字只是提供了互斥访问的能力并不涉及消息的发送和接收。 常见报错 ##跨线程访问 由于label控件是在主线程在Task线程默认是无法访问 解决方法在异步方法前面增加如下代码 CheckForIllegalCrossThreadCalls false;总结温故而知新不同阶段重温知识点会有不一样的认识和理解博主将巩固一遍知识点并以实践方式和大家分享若能有所帮助和收获这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。
http://www.dnsts.com.cn/news/91821.html

相关文章:

  • 农业网站建设公司有色建设网站
  • html5开发的网站到国外做网站网站是怎么回事
  • 库尔勒谁在做电商网站建设长治长治那有做网站的
  • 扬州建站公司电商网站开发项目计划书
  • 营销型网站建设广告语网站开发硬件环境
  • 网站开发学习网免费咨询在线
  • 高校两学一做网站建设哪里有前端技术培训
  • 镇江市建设审图网站河北住房与建设信息网站
  • 网站对公司有什么好处济南建设工程业绩公示的网站
  • 做网站的例子公司部门简介模板
  • 做网站需要学多久北京海淀建设工程律师哪个好
  • 免费养殖网站模板网站开发帐务处理
  • 单页式网站模板最大网站建设公司排名
  • 婚庆网站设计永清县建设局 网站
  • 常州北京网站建设个人快速建站
  • 义乌做网站的网站建设350元
  • 大型电商网站开发规划淘宝优惠券网站用什么软件做
  • 网站开发常见模块wordpress分享插件带赞
  • wordpress改网站地址12380网站建设情况的报告
  • 很看好未来做生鲜的网站网站开发文档管理工具
  • 沈阳之道网站建设个人工商户做网站要上税吗
  • 网站开发工程师应聘书范文楚雄seo
  • 网站建设i rsky网站名称在哪里注册
  • 合肥网站网站建设把自己做的网站传到网上
  • 四川网站排名app和微网站的区别是什么
  • 福田网站建设龙岗网站建设罗湖网站建设网站开发交接表
  • 天河建设网站制作网站建设淘宝类目
  • 微信h5制作网站开发电商主图模板
  • 品牌服装网站建设现状wordpress noren
  • 网站建设方案书一定要有吗可以注册公司的地址