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

北京建设网站公司全国招聘网站排名

北京建设网站公司,全国招聘网站排名,北京王府井附近美食攻略,企业网站建设代理一:并发编程的难点 1:原子性问题 操作系统做任务切换,可以发生在任何一条CPU指令执行完成后#xff1b;CPU能保证的原子操作是指令级别的#xff0c;而不是高级语言的操作符#xff1b; n不是原子操作的#xff0c;而是3条指令 2:可见性问题 可见性是指一个线程对一个…一:并发编程的难点 1:原子性问题 操作系统做任务切换,可以发生在任何一条CPU指令执行完成后CPU能保证的原子操作是指令级别的而不是高级语言的操作符 n不是原子操作的而是3条指令 2:可见性问题 可见性是指一个线程对一个变量进行修改另外一个线程可以看的到可见性问题是由CPU的缓存导致的多核CPU均有各自的缓存这些缓存要与内存进行同步。其实就是多线程环境下,一个线程对一个变量的改变了而另一个线程没看到,那么的话还是按照原来的变量的值进行计算的话那么就会出错。 3:有序性问题 在执行程序时为了提高性能编译器和处理器常常会对指令做重排序重排序不会影响单线程的执行结果但是在并发情况下可能会出现诡异的BUG。 二:并发编程 1:并发编程的目标 解决多核多线程下,造成的 缓存不一致问题指令重排问题处理器优化问题 在cpu和主存之间添加缓存,在多线程下会存在缓存一致性问题可见性问题处理器内部为了使运算单元尽可能的被充分利用,处理器可能会对输入的代码进行乱序处理。这就是处理器优化。原子性问题很多编程语言的编译器也会有类似的优化比如Java虚拟机的即时编译器JIT也会做指令重排。指令重排问题 2:并发编程的内存模型 为了保证共享内存的正确性可见性、有序性、原子性内存模型定义了共享内存系统中多线程程序读写操作行为的规范。通过这些规则来规范对内存的读写操作从而保证指令执行的正确性。它与处理器有关、与缓存有关、与并发有关、与编译器也有关。他解决了CPU多级缓存、处理器优化、指令重排等导致的内存访问问题保证了并发场景下的一致性、原子性和有序性。 3:这个内存模型是什么 JMM是Java Memory Model的缩写Java线程之间的通信由JMM控制即JMM决定一个线程对共享变量的写入何时对另一个线程可见。JMM定义了线程和主内存之间的抽象关系通过控制主内存与每个本地内存抽象概念之间的交互JMM为Java程序员提供了内存可见性的保证。JMM是一种规范目的是解决由于多线程通过共享内存进行通信时存在的本地内存数据不一致、编译器会对代码指令重排序、处理器会对代码乱序执行等带来的问题。 4:源代码和指令间的重排序 为了提高性能编译器和处理器常常会对指令做重排序。重排序有3种类型其中后2种都是处理器重排序。这些重排序可能会导致多线程程序出现内存可见性问题。 1.编译器优化重排序编译器在不改变单线程程序语义的前提下可以重新安排语句的执行顺序。2.指令级并行重排序现代处理器采用了指令级并行技术来将多条指令重叠执行如果不存在数据依赖性处理器可以改变语句对应机器指令的执行顺序。3.内存系统的重排序由于处理器使用缓存和读/写缓冲区这使得加载和存储操作看上去可能是在乱序执行。 5:解决CPU带来的重排序 CPU内存屏障 1.LoadLoad:禁止读和读的重排序2.StoreStore:禁止写和写的重排序3.LoadStore:禁止读和写的重排序4.StoreLoad:禁止写和读的重排序。 Java内存屏障 public final class Unsafef{ public native void loadFence();//LoadLoad LoadStore public native void storeFence();//StoreStore LoadStore public native void fullFence();//loadFence()storeFence()StoreLoad }6:解决编译器带来的重排序 (1):如何解决 JMM使用nappens-before规则来阐述操作之间的内存可见性以及什么时候不能重排序。在JMM中如果一个操作执行的结果需要对另一个操作可见那么这两个操作之间必须要存在nappens-.before:关系。换个角度来说如果A happens-before B,则意味着A的执行结果必须对B可见也就是保证跨线程的内存可见性。其中前4条规则与程序员密切相关。 1.程序顺序规则一个线程中的每个操作happens-before于对…可见该线程中的任意后续操作2.volatile?变量规则对一个volatile域的写happens-before于任意后续对这个volatile域的读3.synchronized规则对一个锁的解锁happens-before于随后对这个锁的加锁4.传递性若A happens-.before B,且B happens-before C,则A happens-before C,5.start()规则若线程A执行Thread.start(0,则线程A的start()操作nappens-before于线程B中的任意操作6.join规则若线程A执行ThreadB.join0并成功返回那么线程B中的任意操作happens-.before于线程A从ThreadB.join0的成功返回。 (2):关键字vlatile 4.1 volatile的基本特性 可见性对一个volatile变量的读总是能看到对这个volatile变量最后的写入原子性对任意单个volatile变量的读/写具有原子性但类似volatile这种复合操作不具有原子性。 4.2 volatilet的内存语义 写内存语义当写一个volatile变量时JMM会把该线程本地内存中的共享变量的值刷新到主内存读内存语义当读一个volatile变量时JMM会把该线程本地内存置为无效使其从主内存中读取共享变量。
http://www.zqtcl.cn/news/187834/

相关文章:

  • 太原网站建设解决方案做建筑机械网站那个网站好
  • 丹徒做网站产品外贸营销推广方案
  • 信息技术 网站建设教案做是么网站
  • 网站建设培训报名wordpress 到小程序
  • 郑州做网站软件建设网站培训
  • 做网站卖东西赚钱吗凡科互动官网登陆
  • 免费写作网站通道一通道二通道三免费
  • 腾讯云做网站选哪个网络广告推广员
  • 昆明网站开发哪家好做网站怎么做小图标
  • 泉州做外贸网站成都idc机房托管
  • 南京林业大学实验与建设网站宁波软件开发制作
  • 北京专业网站制作服务郑州有学网站制作
  • 搭建wordpress需要什么样的环境专注软件优化分享的网站
  • 网站备案后 如何建设下载免费ppt模板
  • 重慶网站建设网络服务器可提供的常见服务有什么、什么、什么和什么服务
  • 网站制作有限公司英文都不懂 学网站建设维护难吗
  • 深圳网站建设公司开发制作网站免费的网页网站
  • 开发网站公司德州做网站公司电话
  • 公司门户网站开发个人网站备案成功后怎么做
  • 远程医疗型网站开发三合一网站有必要吗
  • 什么网站是用html做的网站制作成本多少钱
  • 邢台企业网站制作建设wordpress多站点配置教程
  • 湖北省建设厅网站a群诸城网站价格
  • 江苏网站设计如何设置wordpress不自动更新
  • 已经有网站怎么做淘宝客网站建设 国外
  • 百度新闻源网站株洲在线论坛二手市场
  • 招聘做微信公众号网站维护推广网上国网的好处
  • php企业网站通讯录管理系统查找企业资料的网站
  • 专门做娱乐场所的设计网站有虚拟主机wordpress
  • 在线制作书封网站建德建设局官方网站