[发明专利]一种非主线程失效方法及装置无效
申请号: | 201110434409.0 | 申请日: | 2011-12-22 |
公开(公告)号: | CN102609308A | 公开(公告)日: | 2012-07-25 |
发明(设计)人: | 佘军 | 申请(专利权)人: | 深圳市万兴软件有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 深圳汇智容达专利商标事务所(普通合伙) 44238 | 代理人: | 潘中毅 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 主线 失效 方法 装置 | ||
技术领域
本发明涉及一种通信技术领域,尤其涉及一种非主线程失效方法和装置。
背景技术
线程(thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针,寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
线程分为主线程和非主线程,现有技术在Cocoa程序(苹果公司为Mac OS X所创建的原生面向对象的编程环境)中可以通过NSThread类的方法创建新的线程(非主线程):
+ detachNewThreadSelector:toTarget:withObject:
– initWithTarget:selector:object:
当上述创建的线程在特定情况下需要退出时,Nsthread类提供了下列两种方法:
1、采用exit类方法,该方法通常起到的作用只是使主线程退出,却并不能使特定的线程退出。
2、采用cancel对象方法,该方法相当于给线程设了一个标示位,但并不能立即使线程失效,只有调用该cancel对象方法后,主线程才会退出,但是对于特定的线程(非主线程),即使调用该cancel对象方法后,非主线程仍会继续执行,即该方法对非主线程是无效的。
综上,NSThread类没有提供使非主线程失效的方法,一些不必要的非主线程一直运行导致CPU资源浪费。
发明内容
本发明针对现有技术中存在的非主线程不能失效所带来的占用CPU资源的问题,提供了一种简单有效的使得非主线程失效的技术,可以避免浪费CPU运行资源。
本发明提供的一种非主线程失效方法,包括:
获取需要失效的非主线程的地址;
依据所述需要失效的非主线程的地址,利用非主线程地址对象,调用删除cancel函数,将所述需要失效的非主线程的状态标识位标记为删除状态;
接收到对所述非主线程进行操作时,判断所述非主线程的状态标识位是否为删除状态,若是,则不执行对所述非主线程的操作;若否,则执行对所述非主线程的操作。
其中,所述获取需要失效的非主线程的地址,包括:
对于采用[[NSThread alloc][initWithTarget:selector:object:]]创建的非主线程,分配一个空间保存该非主线程的地址,并将所述空间的地址作为该需要失效的非主线程的地址。
另一种实施方式中,所述获取需要失效的非主线程的地址,包括:
对于采用[NSThread detachNewThreadSelector:toTarget:withObject:]创建的非主线程,在非主线程运行的过程中,采用NSThtead类的类方法[NSThread currentThread]获取该非主线程的地址。
相应的,本发明还提供了一种非主线程失效装置,包括:
地址获取模块,用于获取需要失效的非主线程的地址;
标识设置模块,用于依据所述地址获取模块获取的需要失效的非主线程的地址,利用非主线程地址对象,调用删除cancel函数,将所述需要失效的非主线程的状态标识位标记为删除状态;
判断模块,用于接收到对所述非主线程进行操作时,判断所述非主线程的状态标识位是否为删除状态;
操作执行模块,用于在所述判断模块判断为是时,不执行对所述非主线程的操作;在所述判断模块判断为否时,执行对所述非主线程的操作。
其中,所述地址模块具体用于对于采用[[NSThread alloc][initWithTarget:selector:object:]]创建的非主线程,分配一个空间保存该非主线程的地址,并将所述空间的地址作为该需要失效的非主线程的地址。
另一种实施例中,所述地址获取模块具体用于对于采用[NSThread detachNewThreadSelector:toTarget:withObject:]创建的非主线程,在非主线程运行的过程中,采用NSThtead类的类方法[NSThread currentThread]获取该非主线程的地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市万兴软件有限公司,未经深圳市万兴软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110434409.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种COREX炉渣配制的绿色混凝土
- 下一篇:改进结构的农作物秸秆收获打捆机