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

大气简洁网站烟台网站建设

大气简洁网站,烟台网站建设,网站qq链接怎么做,做美食网站视频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/41107.html

相关文章:

  • 文化传媒网站建设苏州网站建设公司
  • 网站制作合同现在有什么技能培训班
  • 大良网站智能推广机构数字营销成功案例
  • 免费个人电子版简历下载排名seo公司哪家好
  • 建设一个网站需要多少钱搜索引擎网站有哪些
  • 浙江建设工程信息管理平台杭州网站优化推荐
  • 有哪些可以做翻译兼职的网站吗赚钱平台
  • 修改wordpress 的权限seo与sem的区别和联系
  • wordpress mu模式杭州seo排名优化外包
  • 想网上卖家具怎么做网站中国最大的企业培训公司
  • 东莞公司网站设计网站优化外包价格
  • 西安市规划建设局网站网站快照优化公司
  • 旅游房地产网站建设查询网站
  • WordPress高级投稿网站如何优化一个关键词
  • 网易企业邮箱登录入口官网手机版纯手工seo公司
  • 沈阳市网站设计公司大全google搜索引擎下载
  • ps 怎么做网站网站top排行榜
  • 免费的工程网站网站seo推广平台
  • 公司网站建设服务百度关键词挖掘
  • 做网站是不是要模板宁波seo优化费用
  • wordpress下载站主题汕头网站建设方案维护
  • 贵阳网站开发公司黄页网站推广
  • 有了域名怎样做淘客网站百度怎么优化网站关键词
  • 苏州网站建设多少钱网站seo分析
  • 南县做网站推荐百度服务电话在线人工
  • 合浦建设局网站网页入口网站推广
  • 组织网站建设应该注意什么关键词优化seo
  • 龙华三网合一网站建设网站做优化一开始怎么做
  • 做爰全过程免费的视频99网站搜索引擎优化seo课程总结
  • 安阳网站自然优化推广链接怎么制作