[发明专利]一种耗时操作取消及阻塞异步转换的方法及系统有效
申请号: | 202110911090.X | 申请日: | 2021-08-10 |
公开(公告)号: | CN113360302B | 公开(公告)日: | 2021-10-29 |
发明(设计)人: | 肖华熙;钱云潇 | 申请(专利权)人: | 成都市奇点软件有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 成都四合天行知识产权代理有限公司 51274 | 代理人: | 张超 |
地址: | 610000 四川省成都*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 耗时 操作 取消 阻塞 异步 转换 方法 系统 | ||
1.一种耗时操作取消及阻塞异步转换的方法,其特征在于,包括:
创建耗时操作线程,并将所述耗时操作线程异步运行于后台;每一个耗时操作线程对应至少一个阻塞函数;
为所述耗时操作线程建立二状态信号量,所述二状态信号量的状态包括有信号和无信号;
多个所述耗时操作线程对应的二状态信号量被存储于全局表中;当平台支持线程局部存储时,可将所述二状态信号量额外存储于线程局部存储中;
任意线程通过所述全局表获取所述耗时操作线程对应的二状态信号量;当任意线程对所述耗时操作进行取消时,将所述二状态信号量的状态修改为有信号;
所述耗时操作线程从所述全局表或线程局部存储中获取当前线程对应的二状态信号量,监听或查询到所述二状态信号量的状态为有信号时,取消所述耗时操作;
耗时操作实现为阻塞函数;当耗时操作的完成可被监听时,所述阻塞函数在监听等待耗时操作完成的同时,监听当前线程对应的二状态信号量以检测取消;当耗时操作的完成不可被监听时,所述阻塞函数在执行耗时操作的过程中,通过间歇性查询当前线程对应的二状态信号量状态以检测取消,当耗时操作完成或检测到取消并处理后返回。
2.根据权利要求1所述的一种耗时操作取消及阻塞异步转换的方法,其特征在于,创建耗时操作线程,并将所述耗时操作线程异步运行于后台包括:
创建耗时操作线程时,将对阻塞函数的一次调用的信息打包进函数对象中;
通过第一异步支持模块创建耗时操作线程,所述耗时操作线程调用并执行所述函数对象;
通过第二异步支持模块在监听耗时操作线程完成操作的同时监听并分发UI消息,以响应UI操作;
当所述耗时操作线程调用执行所述函数对象,并待其返回后发出完成通知;
使用所述函数对象或异步协调对象中记录的完成通知方式和附加信息发出完成通知;所述完成通知方式和所述附加信息由应用程序在发起异步请求时指定;所述异步协调对象由第一异步支持模块在创建耗时操作线程前创建和设置。
3.根据权利要求1所述的一种耗时操作取消及阻塞异步转换的方法,其特征在于,还包括:
一个阻塞函数可以调用任意数目,任意层次的子阻塞函数,形成大粒度阻塞函数;
在所述大粒度阻塞函数的任意子阻塞函数中通过查询或监听获取对应所述耗时操作线程的二状态信号量为有信号,或通过子阻塞函数返回的错误码检测到操作被取消时,所述子阻塞函数通过错误码向外层函数指示操作被取消,直至最外层阻塞函数。
4.根据权利要求1所述的一种耗时操作取消及阻塞异步转换的方法,其特征在于,还包括:
在创建耗时操作线程之前创建取消管理模块;所述取消管理模块被配置为对所述二状态信号量进行管理和支持线程获取所述二状态信号量;
当任意线程对所述耗时操作进行取消时,所述取消管理模块将所述耗时操作线程对应的二状态信号量修改为有信号;
所述取消管理模块支持所述耗时操作线程获取当前线程的二状态信号量,并根据当前线程的二状态信号量状态判断操作是否被请求取消;
封装或改造平台耗时操作阻塞模式API;在应用层实施时,可封装所述平台API;在平台内核实施时,可改造所述平台API;在所述平台API的封装或改造实现中,在等待对应耗时操作完成的同时,监听当前线程对应的二状态信号量以检测取消。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都市奇点软件有限公司,未经成都市奇点软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110911090.X/1.html,转载请声明来源钻瓜专利网。