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

同一虚拟空间做两个网站wordpress除了首页全是404

同一虚拟空间做两个网站,wordpress除了首页全是404,网站建设存在风险,成都网站设计策划免费文章目录 一、通过内存序实现顺序模型1、Relaxed Ordering2、Sequencial Consistent Ordering3、Acquire Release Ordering 前言 前文介绍了六种内存顺序#xff0c;以及三种内存模型#xff0c;本文通过代码示例讲解六种内存顺序使用方法#xff0c;并实现相应的内存模型。… 文章目录 一、通过内存序实现顺序模型1、Relaxed Ordering2、Sequencial Consistent Ordering3、Acquire Release Ordering 前言 前文介绍了六种内存顺序以及三种内存模型本文通过代码示例讲解六种内存顺序使用方法并实现相应的内存模型。 一、通过内存序实现顺序模型 1、Relaxed Ordering memory_order_relaxed 表示“最宽松的内存序”不提供任何同步保证。具体来说memory_order_relaxed 仅保证原子操作本身是原子的但不保证操作之间的顺序。 在 memory_order_relaxed 的语义下编译器和处理器可能会对原子操作进行重排序以提高性能。在多线程环境中使用 memory_order_relaxed 的原子操作可能会产生不可预测的结果因为线程之间的操作顺序可能会因为重排序而发生变化。例如 std::atomicbool x, y; std::atomicint z;void write_x_then_y() {x.store(true, std::memory_order_relaxed); // 1y.store(true, std::memory_order_relaxed); // 2 }void read_y_then_x() {while (!y.load(std::memory_order_relaxed)) { // 3std::cout y load false std::endl;}if (x.load(std::memory_order_relaxed)) { //4z;} }void TestOrderRelaxed() {std::thread t1(write_x_then_y);std::thread t2(read_y_then_x);t1.join();t2.join();assert(z.load() ! 0); // 5 }在上面的程序中断言有可能被触发线程A执行write_x_then_y函数线程B执行read_y_then_x函数。由于使用宽松内存序操作1对应的指令可能重排到操作2对应的指令后面此时当线程A执行完操作2时操作1还没有被执行x对应的值还没有写入到内存xfalse、ytrue。线程2执行到操作3时读到y为true退出循环线程2看到的x的值为false时可以从指令重排与缓存结构两个角度来理解不会执行操作4进而导致断言触发。 注意虽然 memory_order_relaxed 不提供同步保证但它仍然可以用于某些不需要严格同步的场景。例如在某些计数器或统计场景中可以使用宽松内存序来提高性能因为这些场景通常不需要严格的同步语义。 2、Sequencial Consistent Ordering memory_order_seq_cst 代表了顺序一致性Sequentially Consistent的内存模型。这种内存序提供了最严格的同步保证它确保所有线程都将看到相同的操作顺序并且所有原子操作都将按照程序顺序执行。 具体来说当使用 memory_order_seq_cst 进行原子操作时编译器和处理器不会对这些操作进行任何形式的重排序以确保在所有线程中看到的操作顺序是一致的。这种内存序适用于那些需要强一致性的场景但也可能带来一定的性能开销。 使用memory_order_seq_cst内存序解决前面遇到的问题如下 void write_x_then_y() {x.store(true, std::memory_order_seq_cst); // 1y.store(true, std::memory_order_seq_cst); // 2 }void read_y_then_x() {while (!y.load(std::memory_order_seq_cst)) { // 3std::cout y load false std::endl;}if (x.load(std::memory_order_seq_cst)) { //4z;} }void TestOrderSeqCst() {std::thread t1(write_x_then_y);std::thread t2(read_y_then_x);t1.join();t2.join();assert(z.load() ! 0); // 5 }上面的代码x和y采用的是memory_order_seq_cst当线程2执行到操作3读出来y的值为true时会退出循环。因为使用的是全局一致性模型不会对指令顺序进行优化操作1一定会在操作2前面执行所以当y的值被修改成成true时执行操作2操作1一定被执行了此时在线程2看到的x的值为true会执行操作4进而断言不会被触发。 注意实现 sequencial consistent 模型有一定的开销现代 CPU 通常有多核每个核心还有自己的缓存为了做到全局顺序一致每次写入操作都必须同步给其他核心。为了减少性能开销如果不需要全局顺序一致应该考虑使用更加宽松的顺序模型。 3、Acquire Release Ordering Acquire Release Ordering 模型中会使用 memory_order_acquire、memory_order_release 和 memory_order_acq_rel 这三种内存顺序具体用法如下: memory_order_acquire原子变量的 load 操作可以使用称为 acquire 操作memory_order_release原子变量的 store 操作可以使用称为 release 操作memory_order_acq_relread-modify-write 操作即读 (load) 又写 (store)可以使用 memory_order_acquire、memory_order_release 和 memory_order_acq_rel。如果使用 memory_order_acquire则作为 acquire 操作如果使用 memory_order_release则作为 release 操作如果使用 memory_order_acq_rel则同时为两者 Acquire-release 可以实现 synchronizes-with 关系该关系的解释可以参考11.5章节可以通过Acquire-release 修正 TestOrderRelaxed函数以达到同步的效果如下 void TestReleaseAcquire() {std::atomicbool rx, ry;std::thread t1([]() {rx.store(true, std::memory_order_relaxed); // 1ry.store(true, std::memory_order_release); // 2});std::thread t2([]() {while (!ry.load(std::memory_order_acquire)); //3assert(rx.load(std::memory_order_relaxed)); //4});t1.join();t2.join(); }采用Acquire-release 模型操作3与操作2构成 synchronizes-with 关系操作2的结果对操作3可见。当操作3读取到y的值为true时说明操作2一定被执行了操作2使用的是memory_order_release内存序操作1指令不会被优化到操作2后面参考11.3对memory_order_release内存序的介绍操作2执行了那么操作1也一定会被执行线程2此时读到ytrue、xtrue操作4一定会被执行断言不会被触发。
http://www.dnsts.com.cn/news/282355.html

相关文章:

  • 公司网站建设深圳微信小程序开发者工具官网下载
  • 外贸网站案例网站建设应该考虑哪些问题
  • 上饶企业网站建设网站建设关键要做好哪些
  • 做高性能的网站 哪门语言好坂田网站建设方案
  • php网站开发和js网站结构框架图怎么做
  • thinkphp 网站开发免费源码资源网
  • 四川蓉合建设公司网站网站如何盈利流量费
  • 武威 网站建设做sorry动图的网站
  • 网站建设鼠标点击变色怎么弄数码电子产品网站名称
  • 长沙的网站建设seo外链软件
  • 网站升级 云南省建设注册考试中心药企网站怎么做
  • 柳江企业网站建设公司公司制度建设的意义
  • 读取别人网站代码自己做找人开发一个网站多少钱
  • 安全的网站制作公司个人作品网站模板
  • 网站源代码在哪里衡阳seo优化
  • 太原建站模板搭建企业网站设计优化公司
  • 建站模板免费下载做网站图片和文字字体侵权
  • 南通网站建设价格网站刷链接怎么做的
  • 咖啡网站设计模板文化建设方案
  • 亚马逊网站ui设计平均工资
  • 泰安网站销售公司tp框架做响应式网站
  • 不锈钢网站样板企业vi设计公司旅游公司logo
  • 省建设厅网站查询wordpress怎么开发文档
  • 武进做网站wordpress中英文
  • 淄博做网站推广公司网站的色彩
  • 网站导航做外链pc端自定义页设计与制作
  • 在线捕鱼网站建设沧州做网站
  • 建设银行官网官方网站网站 配色表
  • 网站及其建设的心得江津集团网站建设
  • 呼和浩特市城乡建设网站浙江省建设银行纪检官方网站