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

花都网站设计都wordpress怎么做信息分类

花都网站设计都,wordpress怎么做信息分类,网站域名登陆地址,网上骗人彩票网站是怎么做的前言 华为仓颉语言除了提供原子操作,可重入互斥锁和 Monitor 用来保证多线程并发安全之外,还提供了 MultiConditionMonitor,synchronized 和 ThreadLocal 三种同步机制解决线程间同步问题。本篇文章详细介绍这三种同步机制的作用原理及使用&…

前言

华为仓颉语言除了提供原子操作,可重入互斥锁和 Monitor 用来保证多线程并发安全之外,还提供了 MultiConditionMonitor,synchronized 和 ThreadLocal 三种同步机制解决线程间同步问题。本篇文章详细介绍这三种同步机制的作用原理及使用,建议点赞收藏!

同步机制

MultiConditionMonitor

MultiConditionMonitor 继承于可重入互斥锁 ReentrantMutex,并提供了一个 newCondition() 方法用来动态创建条件变量,解决复杂场景下线程间同步问题。

以经典的生产-消费模型为例,看看 MultiConditionMonitor 是怎么实现生产者和消费者的?

  1. 定义共享资源类,创建两个条件变量 empty 和 full,用来标识 MulticonditionMonitor 的等待和唤醒条件。
class Apple {let monitor = MultiConditionMonitor()var count: Int64 = 0var empty: ConditionIDvar full: ConditionIDinit() {count = 0synchronized(monitor) {empty = monitor.newCondition()full = monitor.newCondition()}}func produceApple() {synchronized(monitor) {while (count == 100) {AppLog.info("Apple-produceApple wait")monitor.wait(empty)}count++AppLog.info("Apple-produceApple ${count}")monitor.notify(full)}}func comsumApple() {synchronized(monitor) {while (count == 0) {AppLog.info("Apple-comsumApple wait")monitor.wait(full)}count--;AppLog.info("Apple-comsumApple ${count}")monitor.notify(empty)}}
}
  1. 测试生产-消费者模型,当一个线程生产一个 apple 后,另一个线程则消费掉苹果,否则当前线程处于等待状态。
  spawn {for (_ in 1..8) {apple.produceApple()sleep(Duration.millisecond * 200) }}spawn {for (_ in 1..8) {apple.comsumApple()sleep(Duration.millisecond * 200) }}
  1. 测试结果,Apple 的生产与消费交替执行。
Apple-produceApple 1
Apple-comsumApple 0
Apple-produceApple 1
Apple-comsumApple 0
Apple-produceApple 1
Apple-comsumApple 0
Apple-produceApple 1
Apple-comsumApple 0
Apple-produceApple 1
Apple-comsumApple 0

synchronized

synchronized 关键字对于大家来说肯定不陌生,在 java 中,synchronized 用来给共享变量进行加锁确保多线程下对共享变量的访问安全。而在仓颉语言中,synchronized 通常和 ReentrantMutex()一起使用,用来自动加解锁。

不使用 synchronized 时,需要手动调用 lock()和 unlock()方法。

 var sum = AtomicInt64(0)let mutex =  ReentrantMutex()for (pattern in 1..100) {spawn {mutex.lock()sum +=1mutex.unlock()}}sleep(Duration.second*2)AppLog.info("Main===${sum}")

使用 synchronized 后,不需要手动调用lock()和 unlock()方法。

 var sum = AtomicInt64(0)let mutex =  ReentrantMutex()for (pattern in 1..100) {spawn {synchroized(mutex){sum +=1}}}sleep(Duration.second*2)AppLog.info("Main===${sum}")

ThreadLocal

线程局部变量 ThreadLocal 的作用在仓颉与 Java 中基本相同,都是将数据保存在线程内部存储空间来保存局部变量,使不同的线程间能够安全的访问自己的局部变量,做到线程隔离的作用。

  let threadLocal = ThreadLocal<Int64>()let fun1 =  spawn {this.threadLocal.set(100)AppLog.info("线程1 === ${this.threadLocal.get().getOrThrow()}")}
let fun2=  spawn {this.threadLocal.set(200)AppLog.info("线程2 === ${this.threadLocal.get().getOrThrow()}")}//输出线程1 === 100线程2 === 200

总结

仓颉语言中的一共提供了 6 种并发工具,用来解决多线程下的并发安全问题。本篇文章讲述最后的三种并发工具,使用和理解上都和 java 基本相似,特别是synchroized 和 ThreadLocal 的基本使用掌握起来也十分容易,已经学会了的小伙伴,赶快动手试试吧!。


文章转载自:

http://bNRsfVhU.mphkz.cn
http://5rLRViIX.mphkz.cn
http://uUej4HoI.mphkz.cn
http://bVHHRzv2.mphkz.cn
http://1SIU5lkx.mphkz.cn
http://XkkQoi24.mphkz.cn
http://0tthEOXz.mphkz.cn
http://WxL24cjT.mphkz.cn
http://XE41y9RJ.mphkz.cn
http://U7nL3w5Y.mphkz.cn
http://fH1zEZsX.mphkz.cn
http://ON8I7mDk.mphkz.cn
http://BUzVvKd5.mphkz.cn
http://lSmNGlM2.mphkz.cn
http://ViJmYdCD.mphkz.cn
http://GvwjxdBZ.mphkz.cn
http://tkfhlxhH.mphkz.cn
http://wSb6i6S1.mphkz.cn
http://098Wq6wS.mphkz.cn
http://CYrMdQVx.mphkz.cn
http://9pNsgiM0.mphkz.cn
http://B1Yy0XUj.mphkz.cn
http://tkPUu9Hd.mphkz.cn
http://wa1brH1l.mphkz.cn
http://KkKDxgzB.mphkz.cn
http://B0OfBiam.mphkz.cn
http://7EJ7RGbQ.mphkz.cn
http://m2Tm5Xkm.mphkz.cn
http://4kBn1D44.mphkz.cn
http://uqeDcXGj.mphkz.cn
http://www.dtcms.com/wzjs/653658.html

相关文章:

  • 青岛的互联网公司有哪些seo作用与原理思维导图
  • 福田企业网站推广公司畅言wordpress
  • 深圳石岩做网站wordpress手机端侧面小工具
  • 浙江第一水电建设集团网站查看网站有没有做301
  • 西安有没有网站建设和营销的培训建设网站的新闻
  • 大连网站制作咨询电商论坛网站模板
  • 北京网站制作报价从化网站建设公司
  • 娱乐网站开发多少钱建设银行国际互联网站
  • 如何 做镜像网站开网店
  • 网站建设分为哪三部分揭阳网站建设
  • 网站建设官网型好呢还是商城型河南建筑公共信息
  • 做网站要注意什么问题关键词排名查询工具有什么作用?
  • 免费手机h5模板网站模板下载设置WordPress文章图片
  • 建材网站建设成都购物网站 设计
  • 海门市住房和城乡建设局网站wordpress 文章发布
  • c 网站开发类似优酷网站建设的研发项目
  • 佛山cms模板建站创意设计思维
  • 免费建站还用学做网站吗做图素材网站
  • 广东今科网站建设wordpress rss采集插件
  • 做印刷哪个网站好怎么申请电商平台
  • 网站效果主要包括所见即所得网站管理系统
  • 过期网站查询安卓app开发培训
  • 南京的网站建设公司昆明有几个区
  • 网页做网站的尺寸狠友紧急升级访问页面
  • 公司网站建设吧个好startuply中文版wordpress主题
  • 全网站开发是什么做网站需要硬件设施
  • 网站建设-易速通科技WordPress仪表盘主题
  • 做网站 广州大型门户网站建设企业
  • wordpress多站点用户互通网站收录
  • 深圳网站制作公司怎么样鞋网站建设