网站建设后的注意问题学做电商需要多少钱

news/2025/9/22 19:46:09/文章来源:
网站建设后的注意问题,学做电商需要多少钱,自豪地采用wordpress 删除,英雄联盟网页制作素材本文所讨论的计算机模型是Shared Memory Multiprocessor#xff0c;即我们现在常见的共享内存的多核CPU。本文适合的对象是想用C 或者Java进行多线程编程的程序员。本文主要包括对Sequential Consistency和Cache Coherence的概念性介绍并给出了一些相关例子#xff0c;目的是… 本文所讨论的计算机模型是Shared Memory Multiprocessor即我们现在常见的共享内存的多核CPU。本文适合的对象是想用C 或者Java进行多线程编程的程序员。本文主要包括对Sequential Consistency和Cache Coherence的概念性介绍并给出了一些相关例子目的是帮助程序员明白为什么需要在并行编程时关注Sequential Consistency。Sequential Consistency下文简称SC是Java内存模型和即将到来的C 0x内存模型的一个关键概念它是一个最直观最易理解的多线程程序执行顺序的模型。Cache Coherence下文简称CC是多核CPU在硬件中已经实现的一种机制简单的说它确保了对在多核CPU的Cache中一个地址的读操作一定会返回那个地址最新的被写入的值。那么为什么程序员需要关心SC呢因为现在的硬件和编译器出于性能的考虑会对程序作出违反SC的优化而这种优化会影响多线程程序的正确性也就是说你用C 编写的多线程程序可能会得到的不是你想要的错误的运行结果。Java从JDK1.5开始加入SC支持所以Java程序员在进行多线程编程时需要注意使用Java提供的相关机制来确保你程序的SC。程序员之所以不需要关心CC的细节是因为现在它已经被硬件给自动帮你保证了不是说程序员完全不需要关心CC实际上对程序员来说理解CC的大致工作原理也是很有帮助的典型的如避免多线程程序的伪共享问题即False Sharing。那么什么是SC什么是CC呢1.Sequential Consistency (顺序一致性SC的作者Lamport给的严格定义是“… the result of any execution is the same as if the operations of all the processors were executed in some sequential order, and the operations of each individual processor appear in this sequence in the order specified by its program.”这个概念初次理解起来拗口不过不要紧下面我会给出个很直观的例子帮助理解。假设我们有两个线程线程1和线程2分别运行在两个CPU上有两个初始值为0的全局共享变量x和y两个线程分别执行下面两条指令初始条件x y 0;线程 1线程 2x 1;y1;r1 y;r2 x;因为多线程程序是交错执行的所以程序可能有如下几种执行顺序Execution 1Execution 2Execution 3x 1;r1 y;y 1;r2 x;结果:r10 and r2 1y 1;r2 x;x 1;r1 y;结果: r1 1 and r2 0x 1;y 1;r1 y;r2 x;结果: r1 1 and r2 1当然上面三种情况并没包括所有可能的执行顺序但是它们已经包括所有可能出现的结果了所以我们只举上面三个例子。我们注意到这个程序只可能出现上面三种结果但是不可能出现r10 and r20的情况。SC其实就是规定了两件事情1每个线程内部的指令都是按照程序规定的顺序program order执行的单个线程的视角2线程执行的交错顺序可以是任意的但是所有线程所看见的整个程序的总体执行顺序都是一样的整个程序的视角第一点很容易理解就是说线程1里面的两条语句一定在该线程中一定是x1先执行r1y后执行。第二点就是说线程1和线程2所看见的整个程序的执行顺序都是一样的举例子就是假设线程1看见整个程序的执行顺序是我们上面例子中的Execution 1那么线程2看见的整个程序的执行顺序也是Execution 1不能是Execution 2或者Execution 3。有一个更形象点的例子。伸出你的双手掌心面向你两个手分别代表两个线程从食指到小拇指的四根手指头分别代表每个线程要依次执行的四条指令。SC的意思就是说1对每个手来说它的四条指令的执行顺序必须是从食指执行到小拇指2你两个手的八条指令八根手指头可以在满足1的条件下任意交错执行例如可以是左1左2右1右2右3左3左4右4也可以是左1左2左3左4右1右2右3右4也可以是右1右2右3左1左2右4左3左4等等等等其实说简单点SC就是我们最容易理解的那个多线程程序执行顺序的模型。2. Cache Conherence 缓存一致性那么CC是干什么用的呢这个要详细说的话就复杂了写一本书绰绰有余。简单来说我们知道现在的多核CPU的Cache是多层结构一般每个CPU核心都会有一个私有的L1级和L2级Cache然后多个CPU核心共享一个L3级缓存这样的设计是出于提高内存访问性能的考虑。但是这样就有一个问题了每个CPU核心之间的私有L1L2级缓存之间需要同步啊。比如说CPU核心1上的线程A对一个共享变量global_counter进行了加1操作这个被写入的新值存到CPU核心1的L1缓存里了此时另一个CPU核心2上的线程B要读global_counter了但是CPU核心2的L1缓存里的global_counter的值还是旧值最新被写入的值现在还在CPU核心1上呢怎么把这个任务就交给CC来完成了CC是Cache之间的一种同步协议它其实保证的就是对某一个地址的读操作返回的值一定是那个地址的最新值而这个最新值可能是该线程所处的CPU核心刚刚写进去的那个最新值也可能是另一个CPU核心上的线程刚刚写进去的最新值。举例来说上例的Execution 3中r1 y是对y进行读操作该读操作一定会返回在它之前已经执行的那条指令y1对y写入的最新值。可能程序员会说这个不是显而意见的么r1肯定是1啊因为y1已经执行了。其实这个看似简单的”显而易见“在多核processor的硬件实现上是有很多文章的因为y1是在另一个CPU上发生的事情你怎么确保你这个读操作能立刻读到别的CPU核心刚刚写入的值不过对程序员来讲你不需要关心CC因为CPU已经帮你搞定这些事情了不用担心多核CPU上不同Cache之间的同步的问题了感兴趣的朋友可以看看体系结构的相关书籍现在的多核CPU一般是以MESI protocol为原型来实现CC。总结一下CC和SC其实是相辅相承的前者保证对单个地址的读写正确性后者保证整个程序对多个地址读写的正确性两者共同保证多线程程序执行的正确性。3. 为什么要关心SC好回到SC的话题。为什么说程序员需要关心SC因为现在的CPU和编译器会对代码做各种各样的优化有时候它们可能会为了优化性能而把程序员在写程序时规定的代码执行顺序(program order)打乱导致程序执行结果是错误的。例如编译器可能会做如下优化即把线程1的两条语序调换执行顺序初始条件xy0;线程 1线程 2r1 y;y1;x 1;r2 x;那么这个时候程序如果按如下顺序执行就可能就会出现r1r20这样程序员认为”不正确“的结果Execution 4r1 y;y 1;r2 x;x 1;为什么编译器会做这样的优化呢因为读一个在内存中而不是在cache中的共享变量需要很多周期所以编译器就”自作聪明“的让读操作先执行从而隐藏掉一些指令执行的latency提高程序的性能。实际上这种类似的技术是在单核时代非常普遍的优化方法但是在进入多核时代后编译器没跟上发展导致了对多线程程序进行了违反SC的错误优化。为什么编译器很难保证SC因为对编译器来讲它很难知道多个线程在执行时会按照什么样的交错顺序执行因为这需要一个整个程序运行时的视角而只对一份静态的代码做优化的编译器是很难得到这种运行时的上下文的。那么为什么硬件也保证不了呢因为CPU硬件中的写缓冲区store buffer会把要写入memory的值缓存起来然后当前线程继续往下执行而这个被缓存的值可能要很晚才会被其他线程“看见”从而导致多线程程序逻辑出错。其实硬件也提供了一些例如Memory Barrier等解决方案但是开销是一个比较大的问题而且很多需要程序员手动添加memory barrier现在还不能指望CPU或者编译器自动帮你搞定这个问题。感兴趣的朋友可以在本文的参考文献中发现很多硬件优化造成SC被违反的例子以及Memory Barrier等解决方案好了我们发现为了保证多线程的正确性我们希望程序能按照SC模型执行但是SC的对性能的损失太大了CPU硬件和编译器为了提高性能就必须要做优化啊为了既保证正确性又保证性能在经过十几年的研究后一个新的新的模型出炉了sequential consistency for data race free programs。简单地说这个模型的原理就是对没有data race的程序可以保证它是遵循SC的这个模型在多线程程序的正确性和性能间找到了一个平衡点。对广大程序员来说我们依赖高级语言内建的内存模型来帮我们保证多线程程序的正确性。例如从JDK1.5开始引入的Java内存模型中已经支持data race free的SC了例如使用volatile关键字atomic变量等但是C 程序员就需要等待C 0x中新的内存模型的atomic类型等来帮助保证SC了(因为atomic类型的值具有acquire和release语义它隐式地调用了memory barrier指令)。什么意思呢说简单点就是由程序员用同步原语例如锁或者atomic的同步变量来保证你程序是没有data race的这样CPU和编译器就会保证你程序是按你所想的那样执行的即SC是正确的。换句话说程序员只需要恰当地使用具有acquire和release语义的同步原语标记那些真正需要同步的变量和操作就等于告诉CPU和编译

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

呼伦贝尔网站建设 设计wordpress域名邮箱设置

文章目录 openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划83.1 MOT内存规划83.2 存储IO83.3 容量需求 openGauss学习笔记-83 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用内存和存储规划 本节描述了为满足特定…

注册网站免费网站开发方向

导语 leetcode刷题笔记记录,本篇博客记录数组基础1部分的题目,主要题目包括: Leetcode 704 二分查找Leetcode 27 移除元素 知识点 二分查找 原理 二分查找的适用对象为有序数组且数组中无重复元素,其主要原理是每次都从有序…

php做网站的源码东坑做网站

贴个群号 WebGIS学习交流群461555818,欢迎大家 心路历程 当vue2由mapbox2升级为mapbox3的时候,您可能会遇到以下的问题 所有的代码都没有改变,升级为mapbox3就会出现部分矢量底图样式丢失,表现为图层已经成功加上,但…

建设银行的网站为什么这么卡91号卡分销平台

1. Sqoop 1.1 Sqoop介绍 Sqoop 是一个在结构化数据和 Hadoop 之间进行批量数据迁移的工具 结构化数据可以是MySQL、Oracle等关系型数据库 把关系型数据库的数据导入到 Hadoop 与其相关的系统 把数据从 Hadoop 系统里抽取并导出到关系型数据库里 底层用 MapReduce 实现数据 …

上海营销网站推广多有什么做ppt的网站吗

目录 一、4大特性(ACID)二、隔离级别三、传播机制 一、4大特性(ACID) 原子性(A):在一个事务中,要么全部成功,要么全部失败。一致性(C)&#xff1…

# Xilnx FPGA 资源结构

Xilnx FPGA 资源结构内容来自b站uo: https://space.bilibili.com/477924102?spm_id_from=333.788.upinfo.head.clickfpga 主要资源CLB 的结构图中展示的是一个数字电路设计的部分,通常用于FPGA(现场可编程门阵列)设…

网站宣传文案范例亚马逊网站链接

当用客户端工具连接数据库 以root 用户登录后 无法给相关用户授权数据库等操作: 原因: root%表示 root用户 通过任意其他端访问操作 被拒绝! 授权即可: 登录server端: mysql -uroot -pxxxxx(使用账号密码登录linux mysql服务内部) 然后输入如下sql命令…

广州市建设工程安监站网站网站建设项目描述

为什么说重载是编译时的多态? 重载(Overloading)被称为编译时的多态,是因为它涉及到在编译阶段(而非运行时)根据方法签名的不同来选择正确的方法实现。重载发生在同一个类中,其中有多个方法具有…

dedecms 视频网站模板WordPress去掉文章摘要

ArkUI即方舟开发框架是HarmonyOS应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界面开发。 开发文档地址 &…

软文网站模板网站建设陆金手指下拉壹玖

提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入我的训练营:云原生AI实战营,一个助力 Go 开发者在 AI 时代建立技术竞争力的实战营;本节课最终源码位于 fastgo 项目的 feature/s14 分支&#x…

各大网站免费观看优化大师软件大全

Java异常详解 异常分类1.Throwable2. Error(错误)3. Exception(异常)3.1 运行时异常 RuntimeException3.2 编译时异常(受检查异常)ClassNotFoundException + IOException4.常见的运行时异常5.异常如何处理Java 的异常处理是通过 5 个关键词来实现的:try、catch、throw、…

昆明做网站建设价位wordpress 做分销

一、platform总线、设备与驱动 在Linux 2.6 的设备驱动模型中,关心总线、设备和驱动3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,…

论坛备案 和网站备案最佳品牌营销策划公司

猫脸码客作为一个专注于开源数据集分享的公众号,致力于为广大用户提供丰富、优质的数据资源。我们精心筛选和整理各类开源数据集,涵盖机器学习、深度学习、自然语言处理等多个领域,以满足不同用户的需求。 (https://img-blog.csdnimg.cn/d98…

app网站建设济宁下面哪一项不属于网络营销方式

// 去掉数组中的空数据 for (let i 0; i < arr.length; i) {if (arr[i] null || arr[i] undefined || arr[i] "") {arr.splice(i, 1);i--;} }

有哪些好的做问卷调查的网站电商设计师常用的网站

引言 最近在学习Mybatis Plus的使用&#xff0c;希望通过spring boot快速将mybatis plus整合进来。 对于springboot项目&#xff0c;mybatis plus团队也有自己的启动器 &#xff1a;mybatis-plus-boot-starter。这个依赖内部已经整合了mybatis-spring&#xff0c;也包括非快速…

2025年录音转文字技术解析与实用工具评测 - 指南

2025年录音转文字技术解析与实用工具评测 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

CF2147H Maxflow GCD Coloring 题解

Description 给定一个无向图 \(G\),它有 \(n\) 个顶点,每条边上有一个正整数容量。我们记 \(\textsf{maxflow}(u,v)\) 为图中从源点 \(u\) 到汇点 \(v\) 的最大流值。 我们称图 \(G\) 是 好图,如果存在一个整数 \(d…

详细介绍:深入理解 JVM 字节码文件:从组成结构到 Arthas 工具实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

免费做网站优化网站建设需要费用

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 人脸检测 4.2 局部区域选择 4.3 特征提取 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .........................................…

借助S参数测量评估电容器阻抗第 2 部分

借助S参数测量评估电容器阻抗第 2 部分2025-09-22 19:37 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !…