System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,尤其涉及一种异步对象生命周期管理方法、装置、设备及存储介质。
技术介绍
1、使用c++做项目编程的时候,常常涉及到注册回调函数,将一个类的成员函数做为回调函数,用于后续的调用。但是,c++的实现是基于对象的,在多线程的情况下,常常会遇到执行回调函数所在的线程跟回调函数属于的对象不在一个线程上,当回调函数的调用条件被触发,去调用回调函数的时候,回调函数所属于的对象已经析构了,内存空间被释放了,此时再调用回调函数,将使程序挂死。
技术实现思路
1、有鉴于此,本申请提供了一种异步对象生命周期管理方法、装置、设备及存储介质,旨在避免去其他线程调用回调函数时,回调函数已析构,造成程序暂停无法执行的问题。
2、第一方面,本申请提供了一种异步对象生命周期管理方法,包括:
3、在第一线程中,为第一类的对象提供共享指针的成员函数;
4、在第二线程中,运行第一函数中封装的回调函数前,通过分析弱指针从第一线程中获取第一类的对象的共享指针,判断所述回调函数所属的第一类的对象是否存在,所述回调函数是属于第一类的对象中的成员函数,所述弱指针指向第一类的对象;
5、若回调函数所属的第一类的对象不存在,则停止调用所述回调函数。
6、可选的,所述若回调函数所属的第一类的对象不存在,包括:
7、若弱指针从第一线程中获取第一类的对象的共享指针为空,则所述回调函数所属的第一类的对象不存在。
8、可选的,所述判断所述回调函
9、若回调函数所属的第一类的对象存在,则运行所述回调函数。
10、可选的,所述若回调函数所属的第一类的对象存在,包括:
11、若弱指针从第一线程中获取到第一类的对象的共享指针,则所述回调函数所属的第一类的对象存在。
12、可选的,所述分析弱指针从第一线程中获取第一类的对象的共享指针,包括:
13、通过lock函数分析弱指针从第一线程中获取第一类的对象的共享指针。
14、可选的,所述为第一类的对象提供共享指针的成员函数,包括:
15、使第一类继承于public std::enable_shared_from_this<第一类>。
16、第二方面,本申请还提供了一种异步对象生命周期管理装置,所述装置包括:
17、第一处理模块,用于在第一线程中,为第一类的对象提供共享指针的成员函数;
18、判断模块,用于在第二线程中,运行第一函数中封装的回调函数前,通过分析弱指针从第一线程中获取第一类的对象的共享指针,判断所述回调函数所属的第一类的对象是否存在,所述回调函数是属于第一类的对象中的成员函数,所述弱指针指向第一类的对象;
19、第二处理模块,用于若回调函数所属的第一类的对象不存在,则停止调用所述回调函数。
20、可选的,所述第二处理模块,还用于若回调函数所属的第一类的对象存在,则运行所述回调函数。
21、第三方面,本申请还提供了一种电子设备,所述设备包括存储器和处理器,所述存储器用于存储指令或代码,所述处理器用于执行所述指令或代码,以使所述设备执行上述的一种异步对象生命周期管理方法。
22、第四方面,本申请还提供了一种计算机存储介质,所述计算机存储介质中存储有代码,当所述代码被运行时,运行所述代码的设备实现所上述的一种异步对象生命周期管理方法。
23、本申请提供了一种异步对象生命周期管理方法、装置、设备及存储介质,本申请在第一线程中,为第一类的对象提供共享指针的成员函数;在第二线程中,运行第一函数中封装的回调函数前,通过分析弱指针从第一线程中获取第一类的对象的共享指针,判断所述回调函数所属的第一类的对象是否存在,所述回调函数是属于第一类的对象中的成员函数,所述弱指针指向第一类的对象;若回调函数所属的第一类的对象不存在,则停止调用所述回调函数。回调函数所属的第一类的对象在第一线程,而第二线程中需要调用属于第一类的对象的回调函数时,会在运行该回调函数前,先通过分析弱指针从第一线程中获取第一类的对象的共享指针,判断第一类的对象是否存在,若第一类的对象不存在,则停止调用回调函数,避免第二线程调用回调函数时,回调函数所属的对象已经析构,造成程序挂死的问题。
本文档来自技高网...【技术保护点】
1.一种异步对象生命周期管理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述若回调函数所属的第一类的对象不存在,包括:
3.根据权利要求1所述的方法,其特征在于,所述判断所述回调函数所属的第一类的对象是否存在,还包括:
4.根据权利要求3所述的方法,其特征在于,所述若回调函数所属的第一类的对象存在,包括:
5.根据权利要求2或4所述的方法,其特征在于,所述分析弱指针从第一线程中获取第一类的对象的共享指针,包括:
6.根据权利要求1所述的方法,其特征在于,所述为第一类的对象提供共享指针的成员函数,包括:
7.一种异步对象生命周期管理装置,其特征在于,所述装置包括:
8.根据权利要求7所述的装置,其特征在于,
9.一种电子设备,其特征在于,所述设备包括存储器和处理器,所述存储器用于存储指令或代码,所述处理器用于执行所述指令或代码,以使所述设备执行所述权利要求1-6任意一项所述的一种异步对象生命周期管理方法。
10.一种计算机存储介质,其特征在于,所述计算
...【技术特征摘要】
1.一种异步对象生命周期管理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述若回调函数所属的第一类的对象不存在,包括:
3.根据权利要求1所述的方法,其特征在于,所述判断所述回调函数所属的第一类的对象是否存在,还包括:
4.根据权利要求3所述的方法,其特征在于,所述若回调函数所属的第一类的对象存在,包括:
5.根据权利要求2或4所述的方法,其特征在于,所述分析弱指针从第一线程中获取第一类的对象的共享指针,包括:
6.根据权利要求1所述的方法,其特征在于,所述为第一类的对象提...
【专利技术属性】
技术研发人员:李冰,王利新,
申请(专利权)人:东软睿驰汽车技术沈阳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。