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

app 与网站sem 推广软件

app 与网站,sem 推广软件,深入解析 wordpress,品牌宣传网站1. 引用计数的线程安全性 完全线程安全&#xff1a;shared_ptr 的引用计数机制本身是线程安全的&#xff0c;这是通过原子操作实现的。 实现原理&#xff1a; // 伪代码示意 class control_block {std::atomic<long> ref_count; // 原子引用计数//... };void increment…

1. 引用计数的线程安全性

  • 完全线程安全shared_ptr 的引用计数机制本身是线程安全的,这是通过原子操作实现的。

  • 实现原理

    // 伪代码示意
    class control_block {std::atomic<long> ref_count;  // 原子引用计数//...
    };void increment_ref_count() {ref_count.fetch_add(1, std::memory_order_relaxed);
    }void decrement_ref_count() {if (ref_count.fetch_sub(1, std::memory_order_acq_rel) == 1) {delete managed_object;  // 安全删除对象}
    }
    • 使用 std::atomic 保证引用计数的增减是原子操作

    • 增加计数用 memory_order_relaxed(只需原子性,无顺序约束)

    • 减少计数用 memory_order_acq_rel(保证删除对象前的所有操作可见)

2. 指向对象的线程安全性

  • 非线程安全shared_ptr 不保证其管理的对象是线程安全的

    // 危险示例:多个线程同时修改同一对象
    std::shared_ptr<int> p = std::make_shared<int>();void thread_func() {p->value++;  // 非原子操作,数据竞争!
    }

    需要额外同步机制(如互斥锁)保护对象内部状态。


3. shared_ptr 实例本身的线程安全性

操作类型线程安全性示例
多个线程同一实例✅ 安全auto p2 = p1;(拷贝构造)
多个线程写不同实例✅ 安全p1.reset(); p2.reset();
多个线程写同一实例❌ 不安全(需加锁)p1 = p2;(赋值操作竞争)

关键机制解析

  1. 原子引用计数的实现

    • 控制块(control block)中的计数器使用原子类型

    • 增减操作通过 CPU 级原子指令实现(如 x86 的 LOCK XADD

    • 保证即使多线程同时拷贝/析构,引用计数也准确

  2. 内存序的作用:

    memory_order_acq_rel 在减少计数时确保:删除对象前,所有线程对对象的操作已完成;避免指令重排序导致对象提前释放
  3. 对象删除安全性
    // 删除对象时的保护逻辑
    if (ref_count.fetch_sub(1) == 1) {  // 原子减后判断// 只有最后一个持有者执行删除delete ptr; 
    }


线程安全使用指南

  1. 安全模式

    // 多线程共享只读对象
    std::shared_ptr<const Config> config = load_config();
    // 所有线程安全读取 config->getValue()
  2. 需加锁场景

    std::shared_ptr<Data> resource;
    std::mutex mtx;void update() {std::lock_guard<std::mutex> lk(mtx);resource = std::make_shared<Data>(new_data); // 安全更新
    }
  3. 高效跨线程传递

    // 使用 std::move 避免原子操作开销
    std::shared_ptr<Job> job = create_job();
    std::thread worker([job = std::move(job)] {// 独占使用,无引用计数开销
    });
  4. 弱引用解决循环依赖

    std::weak_ptr<Node> weak_node = node;
    if (auto locked = weak_node.lock()) { // 原子检查// 安全使用 locked
    }
http://www.dtcms.com/wzjs/231890.html

相关文章:

  • 武汉网站建设网站建设百度旗下推广平台有哪些
  • 做的网站第二年续费多钱个人免费推广网站
  • 联盟营销是一种什么的网络营销方式上海seo优化bwyseo
  • 外国做家具的网站学seo建网站
  • 服装厂做1688网站效果好不好定制网站+域名+企业邮箱
  • 新人做网站盈利镇江网站建站
  • 石家庄外贸网站推广营销策划方案ppt模板
  • wordpress国内访问不了seo自学教程
  • 安微省住房和城乡建设厅网站企业网站怎么建立
  • 网站设计建设公司服务商seo百度首页排名业务
  • 鞍山专业做网站公司2022年最新最有效的营销模式
  • 房产cms名优网站关键词优化
  • 电商网站如何做精细化运营重庆seo教程博客
  • 网站建设维修服务流程网站如何赚钱
  • wordpress 企业模板 免费下载合肥seo网络优化公司
  • seo包年推广杭州seo教程
  • 音乐网站样式设计seo百度首页排名业务
  • 成都网站建设金网科技一个完整的营销策划案范文
  • 企业网站建设jz190大地seo视频
  • 张家港网站制作快速排名怎么做
  • 电子商务学网站建设好吗品牌服务推广
  • 杭州市网站制作seo模拟点击有用吗
  • 秦皇岛做网站网络营销推广计划
  • 清河做网站重庆关键词优化平台
  • 浙江省建设厅继续教育官方网站看广告赚钱的平台
  • 天津专业网站建设公司重庆seo网站哪家好
  • 网站域名过期了怎么办上海专业网络推广公司
  • 中建三局招聘出国务工武汉百度网站优化公司
  • 东营建设信息网站网络搜索引擎有哪些
  • 购物网站怎么做seo推广薪资