[发明专利]基于工作流程的对象析构有效
| 申请号: | 201780043161.0 | 申请日: | 2017-07-03 |
| 公开(公告)号: | CN109478148B | 公开(公告)日: | 2022-03-29 |
| 发明(设计)人: | J·E·斯达尔 | 申请(专利权)人: | 微软技术许可有限责任公司 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F12/02 |
| 代理公司: | 北京市金杜律师事务所 11256 | 代理人: | 王茂华;姚杰 |
| 地址: | 美国华*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 工作 流程 对象 | ||
计算环境中的对象通常由线程通过对象生命周期使用,并在对象生命周期结束时被销毁以回收由对象使用的计算资源。在一些情况下,发起对象的对象析构的线程可能无法完成析构(例如第二线程可以在对象的对象资源上保持同步锁)。对象析构工作流程代表线程来发起对象的析构。如果对象析构工作流程遇到无法完成对象析构,则对对象的新引用将被插入到对象析构列表中,作为对对象的最后一个引用。第二个线程发现并释放对象析构列表中的最后的引用,提示对象析构工作流程代表第二个线程来恢复用于销毁对象的尝试。
背景技术
在计算领域内,许多场景涉及存储对象集合的设备,该对象通常包括对象资源集合,诸如函数、原始数据类型、对其他对象的引用、以及诸如数组、散列表和树的数据容器。在一个或多个执行环境内执行的各种线程(例如利用不同的编程语言、执行域和/或平台)可以创建和访问对象,包括存储对相应线程当前正在使用的对象的引用(例如存储器地址或句柄)。对象可以由若干线程和/或对象同时和/或连续地访问,并且引用计数器可以用于跟踪由线程保持并存储在其他对象中的每个对象的引用的数量。在一些实例中,可以通过同步机制来实现对特定共享资源的并发访问,该同步机制确保在任意时间由一个线程对对象资源的独占访问。诸如互斥锁、信号量或临界区的同步机制可以对待处理请求进行分类;可以通过对象资源向所选线程授予独占访问,同时拒绝其他请求线程访问该对象;并且可以在向具有待处理访问请求的第二线程转移独占访问之前等待所选线程的访问完成。
当线程完成对象的使用时,它释放其引用(隐式或显式),并且引用计数减1。当针对象的引用计数减少到零时,该对象被认为不再使用并准备析构。设备可以最终确定对象的对象资源,并且可以回收由对象保留和/或消耗的存储器和计算资源。替代地,线程可以明确地请求对象的处置,并且设备可以发起完成过程,其可以包括改变由其他线程和/或其他对象保持的对对象的任意现有引用。
发明内容
提供本发明内容是为了以简化的形式介绍概念的选择,该概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键因素或必要特征,也不旨在用于限制所要求保护的主题的范围。
当线程尽力销毁对象时,可能出现一些阻止线程完成对象析构过程的情况。作为第一个这样的示例,对象可以包括由不同执行环境内的第二线程创建的对象资源,其中根据不同执行环境的约定来销毁对象资源的过程可能不完全可用于发起线程。作为第二个这样的示例,对象可以包括专门保留供第二线程使用的对象资源,诸如同步锁,并且在不毁掉第二线程,或诱导设备的不期望行为的情况下,第一线程可能无法中断提供给第二线程的独占访问。作为第三个这样的示例,该对象可以包括当前正忙的对象资源(例如可能需要一段时间才释放的资源上的资源句柄),并且阻止该线程直到该对象资源变得可用于析构可能施加并且不确定线程上的延迟。
当出现这种情况时,线程可以发起对象的析构,但是可能无法完成对象析构过程。线程可以简单地放弃处理,但是这可能使对象处于不一致状态,和/或部分销毁的对象可能无限期地持续作为资源泄漏。线程可以在稍后的时间尽力销毁对象,但是如果某些任务不能被线程执行而不管任意时间,则线程的重复尝试可能表示设备上的一致且无效的资源消耗。此外,在一些情况下,对象的析构可能需要若干线程的参与(例如不同的线程可以在对象的不同部分上保持独占访问),使得没有一个线程可以发起并且还完成对象析构过程。在这些情况下,线程无法完成对象析构过程可能难以以不协调的反复试验方式解决,而不存在各种线程可能参与的更协调的对象析构过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201780043161.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:分布式计算系统中的自适应资源管理
- 下一篇:动态视觉聚焦调节





