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

怎么看网站空间做网站的技术要求

怎么看网站空间,做网站的技术要求,公司提供平台,河南省建设监理协会官方网站两种方法的主要区别在于对象的生命周期管理以及捕获方式的不同。以下是对两种方法的详细对比&#xff1a; 第一种&#xff1a;捕获 shared_from_this() 的方法 event.subscribe([self shared_from_this()]() {std::cout << "Event triggered, object is alive.&qu…

两种方法的主要区别在于对象的生命周期管理以及捕获方式的不同。以下是对两种方法的详细对比:


第一种:捕获 shared_from_this() 的方法

event.subscribe([self = shared_from_this()]() {std::cout << "Event triggered, object is alive." << std::endl;self->onEvent();
});
特点:
  1. 对象生命周期管理

    • 使用 shared_from_this() 捕获当前对象的 std::shared_ptr,保证对象在事件回调执行期间不会被销毁。
    • 即使外部没有对对象的引用,self 持有一个 shared_ptr,延长了对象的生命周期。
    • 适用于需要确保对象在事件发生时仍然有效的场景。
  2. 线程安全性

    • 如果事件回调可能在多线程环境中执行,这种方式可以避免悬空指针的风险。
  3. 对象有效性保障

    • 通过 shared_ptr 持有,可以避免事件触发时对象已被销毁的问题。

第二种:捕获 this 指针的方法

event.subscribe([this]() { std::cout << "Event triggered, object is alive." << std::endl;this->onEvent(); 
});
特点:
  1. 生命周期依赖 this

    • 直接捕获 this 指针,依赖于调用 subscribe 时对象的生命周期。
    • 如果对象在事件触发之前被销毁,则调用 onEvent 会导致未定义行为(悬空指针)。
  2. 效率较高

    • 不需要额外的 shared_ptr 管理,直接捕获 this,开销更低。
    • 适用于生命周期完全受控、确保对象在事件回调中一定有效的场景。
  3. 风险

    • 如果对象在事件触发前已经被销毁,就会导致悬空指针错误,因此适合更受控的环境。

适用场景对比

方法优点缺点适用场景
捕获 shared_from_this()确保对象生命周期,安全性高。可用于异步或多线程环境,避免悬空指针。引入了 shared_ptr,增加了一些开销;要求对象继承 std::enable_shared_from_this异步事件、跨线程回调,或者在事件触发期间需要确保对象存活时。
捕获 this 指针效率高,简单直接,无需 shared_ptr 的额外管理。如果对象生命周期不受控(可能在事件触发前销毁),会导致悬空指针,容易出错。对象生命周期受控的情况下(如事件和对象生命周期严格同步,或者对象销毁前确保事件解绑)。

代码示例

捕获 shared_from_this() 的安全示例:
class Event;
class MyObject : public std::enable_shared_from_this<MyObject> {
public:void onEvent() {std::cout << "Event handled by shared_from_this!" << std::endl;}void subscribeToEvent(Event& event) {event.subscribe([self = shared_from_this()]() {std::cout << "Event triggered, object is alive." << std::endl;self->onEvent();});}
};
捕获 this 的受控示例:
class MyObject {
public:void onEvent() {std::cout << "Event handled by this pointer!" << std::endl;}void subscribeToEvent(Event& event) {event.subscribe([this]() {std::cout << "Event triggered, ensure object is valid." << std::endl;this->onEvent();});}
};

总结:

  • 如果对象生命周期由 std::shared_ptr 管理,建议使用 shared_from_this(),因为它可以确保对象在回调中存活。
  • 如果对象生命周期完全受控,且明确保证事件回调执行时对象一定存活,可以选择效率更高的 捕获 this
http://www.sczhlp.com/news/87958/

相关文章:

  • 手机网站关键词排免费企业邮箱申请注册
  • 租车公司网站 模板小微企业2022年税收优惠政策
  • 代挂QQ建设网站做网站虚拟主机和云服务器
  • 1元购网站建设哪个网站做照片书最好看
  • 徐汇网站开发培训班虚拟机wordpress安装
  • 网站开发用户需求营销型网站建设方面的书
  • 网站建设欣高创园网站建设方案
  • 郴州网站建设专业现状报告群晖 做网站
  • 网站 head关键字 密度 多少字昆明网站推广哪家好
  • 洪栾单页网站建设上海发布官网app下载
  • 网站推广营销联系方式免费网站建设ppt模板下载
  • 5%付费率背后,鸿蒙成独立开发者的“商业理想国”
  • 网站网络广告推广iis网站视频无法播放
  • 网站虚拟空间作用网页游戏传奇单职业
  • 如何提升做网站的效率广东省新闻
  • 哪个网站可以找做中厚板的公司网站页面设计要求
  • 网站产品图怎么做的有没有帮人做数学题的网站
  • 网站建设服务器是什么浙江省嘉兴建设局官方网站
  • 外贸网站案例东莞市城乡建设规划局官网
  • 高端大气上档次网站寒亭区建设局网站
  • 个人网站链接怎么做进度圈wordpress
  • 做羞羞事视频网站网页设计与制作报告模板
  • 针对网站做搜索引擎做优化企业站模板明细
  • 中国建设银行网站属于什么机构网站如何做二级栏目
  • HarmonyOS编写教师节贺卡
  • 下载的网站模板怎么使用东莞城乡建设
  • 中达建设网站浙江常升建设有限公司网站
  • seo整站优化什么价格wordpress壁纸主题
  • 为什么做电影网站没有流量免费自动交易软件app
  • 要屏蔽一个网站要怎么做百度竞价账户