CN102609308A - 一种非主线程失效方法及装置 - Google Patents

一种非主线程失效方法及装置 Download PDF

Info

Publication number
CN102609308A
CN102609308A CN2011104344090A CN201110434409A CN102609308A CN 102609308 A CN102609308 A CN 102609308A CN 2011104344090 A CN2011104344090 A CN 2011104344090A CN 201110434409 A CN201110434409 A CN 201110434409A CN 102609308 A CN102609308 A CN 102609308A
Authority
CN
China
Prior art keywords
main thread
address
needs
inefficacy
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2011104344090A
Other languages
English (en)
Inventor
佘军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Wondershare Software Co Ltd
Original Assignee
Shenzhen Wondershare Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Wondershare Software Co Ltd filed Critical Shenzhen Wondershare Software Co Ltd
Priority to CN2011104344090A priority Critical patent/CN102609308A/zh
Publication of CN102609308A publication Critical patent/CN102609308A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Exchange Systems With Centralized Control (AREA)

Abstract

本发明提供一种非主线程失效方法和装置,所述方法包括:获取需要失效的非主线程的地址;依据所述需要失效的非主线程的地址,利用非主线程地址对象,调用删除cancel函数,将所述需要失效的非主线程的状态标识位标记为删除状态;接收到对所述非主线程进行操作时,判断所述非主线程的状态标识位是否为删除状态,若是,则不执行对所述非主线程的操作;若否,则执行对所述非主线程的操作。实施本发明,通过获取需要失效的非主线程的地址,然后对该非主线程的标识位进行设置,在对非主线程进行操作的时候,对于标志位标记为删除状态的非主线程则不执行操作,从而使得非主线程失效,避免了非主线程占用CPU导致的资源浪费。

Description

一种非主线程失效方法及装置
技术领域
本发明涉及一种通信技术领域,尤其涉及一种非主线程失效方法和装置。
背景技术
线程(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]获取该非主线程的地址。
实施本发明提供的非主线程失效的方法和装置,通过获取需要失效的非主线程的地址,然后对该非主线程的标识位进行设置,在对非主线程进行操作的时候,对于标志位标记为删除状态的非主线程则不执行操作,从而使得非主线程失效,避免了非主线程占用CPU导致的资源浪费。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的非主线程失效方法实施例一的流程示意图;
图2是本发明提供的非主线程失效方法实施例二的流程示意图;
图3是本发明提供的非主线程失效方法实施例三的流程示意图;
图4是本发明提供的非主线程失效装置实施例的结构示意图。
具体实施方式
本发明针对现有技术中存在的非主线程不能失效所带来的占用CPU资源的问题,提供了一种简单有效的使得非主线程失效的技术,可以避免浪费CPU运行资源。
参见图1,为本发明提供的非主线程失效方法实施例一的流程示意图。
本实施例一提供的方法,包括:
步骤100,获取需要失效的非主线程的地址;
步骤101,依据所述需要失效的非主线程的地址,利用非主线程地址对象,调用删除cancel函数,将所述需要失效的非主线程的状态标识位标记为删除状态;
步骤102,接收到对所述非主线程进行操作时,判断所述非主线程的状态标识位是否为删除状态;若是转入步骤103,若否转入步骤104;
步骤103,不执行对所述非主线程的操作;
步骤104,执行对所述非主线程的操作。
实施本发明提供的非主线程失效的方法,通过获取需要失效的非主线程的地址,然后对该非主线程的标识位进行设置,在对非主线程进行操作的时候,对于标志位标记为删除状态的非主线程则不执行操作,从而使得非主线程失效,避免了非主线程占用CPU导致的资源浪费。
需要说明的是,非主线程有多种创建方式,因此本发明中对于获取非主线程的地址提供了不同的方法。下面将一一描述。
参见图2,为本发明提供的非主线程失效方法实施例二的流程示意图。
本实施例二提供的方法,包括:
步骤200,对于采用[[NSThread alloc][initWithTarget:selector:object:]]创建的非主线程,分配一个空间保存该非主线程的地址;
步骤201,将所述空间的地址作为该需要失效的非主线程的地址;
步骤202,依据所述需要失效的非主线程的地址,利用非主线程地址对象,调用删除cancel函数,将所述需要失效的非主线程的状态标识位标记为删除状态;具体的,将需要失效的非主线程的标识位“isCanceled”标记为“YES”。
步骤203,接收到对所述非主线程进行操作时,判断所述非主线程的状态标识位是否为删除状态,也即判断非主线程的标识位“isCanceled”是否被标记为“YES”;若是转入步骤204,若否转入步骤205;
步骤204,不执行对所述非主线程的操作;
步骤205,执行对所述非主线程的操作。
参见图3,为本发明提供的非主线程失效方法实施例三的流程示意图。
本实施例三提供的方法,包括:
步骤300,对于采用[NSThread detachNewThreadSelector:toTarget:withObject:]创建的非主线程,在非主线程运行的过程中,采用NSThtead类的类方法[NSThread currentThread]获取该非主线程的地址;
步骤301,依据所述需要失效的非主线程的地址,利用非主线程地址对象,调用删除cancel函数,将所述需要失效的非主线程的状态标识位标记为删除状态;具体的,将需要失效的非主线程的标识位“isCanceled”标记为“YES”。
步骤302,接收到对所述非主线程进行操作时,判断所述非主线程的状态标识位是否为删除状态,也即判断非主线程的标识位“isCanceled”是否被标记为“YES”;若是转入步骤303,若否转入步骤304;
步骤303,不执行对所述非主线程的操作;
步骤304,执行对所述非主线程的操作。
实施上述实施例提供的非主线程失效的方法,对于通过不同方式创建的非主线程,本发明都提供了相应的方式获取需要失效的非主线程的地址,然后对该非主线程的标识位进行设置,在对非主线程进行操作的时候,对于标志位标记为删除状态的非主线程则不执行操作,从而使得非主线程失效,避免了非主线程占用CPU导致的资源浪费。
参见图4,为本发明提供的非主线程装置实施例的结构示意图。
本实施例提供的非主线程失效装置,包括:
地址获取模块10,用于获取需要失效的非主线程的地址;
标识设置模块11,用于依据所述地址获取模块获取的需要失效的非主线程的地址,利用非主线程地址对象,调用删除cancel函数,将所述需要失效的非主线程的状态标识位标记为删除状态;
判断模块12,用于接收到对所述非主线程进行操作时,判断所述非主线程的状态标识位是否为删除状态;
操作执行模块13,用于在所述判断模块判断为是时,不执行对所述非主线程的操作;在所述判断模块判断为否时,执行对所述非主线程的操作。
实施本发明提供的非主线程失效的装置,通过地址获取模块10获取需要失效的非主线程的地址,然后通过标识设置模块11对该非主线程的标识位进行设置,在对非主线程进行操作的时候,操作执行模块13对于标志位标记为删除状态的非主线程则不执行操作,从而使得非主线程失效,避免了非主线程占用CPU导致的资源浪费。
需要说明的是,非主线程有多种创建方式,因此本发明中对于获取非主线程的地址提供了不同的方法。下面将一一描述。
对于采用[[NSThread alloc][initWithTarget:selector:object:]]创建的非主线程,所述地址获取模块10首先分配一个空间保存该非主线程的地址,并将所述空间的地址作为该需要失效的非主线程的地址。
另一种实施例中,对于采用[NSThread detachNewThreadSelector:toTarget:withObject:]创建的非主线程,所述地址获取模块10具体用于在非主线程运行的过程中,采用NSThtead类的类方法[NSThread currentThread]获取该非主线程的地址。
实施上述实施例提供的非主线程失效装置,对于通过不同方式创建的非主线程,本发明都提供了相应的方式获取需要失效的非主线程的地址,然后对该非主线程的标识位进行设置,在对非主线程进行操作的时候,对于标志位标记为删除状态的非主线程则不执行操作,从而使得非主线程失效,避免了非主线程占用CPU导致的资源浪费。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (6)

1.一种非主线程失效方法,其特征在于,包括:
获取需要失效的非主线程的地址;
依据所述需要失效的非主线程的地址,利用非主线程地址对象,调用删除cancel函数,将所述需要失效的非主线程的状态标识位标记为删除状态;
接收到对所述非主线程进行操作时,判断所述非主线程的状态标识位是否为删除状态,若是,则不执行对所述非主线程的操作;若否,则执行对所述非主线程的操作。
2.如权利要求1所述的非主线程失效的方法,其特征在于,所述获取需要失效的非主线程的地址,包括:
对于采用[[NSThread alloc][initWithTarget:selector:object:]]创建的非主线程,分配一个空间保存该非主线程的地址,并将所述空间的地址作为该需要失效的非主线程的地址。
3.如权利要求1所述的非主线程失效的方法,其特征在于,所述获取需要失效的非主线程的地址,包括:
对于采用[NSThread detachNewThreadSelector:toTarget:withObject:]创建的非主线程,在非主线程运行的过程中,采用NSThtead类的类方法[NSThread currentThread]获取该非主线程的地址。
4.一种非主线程失效装置,其特征在于,包括:
地址获取模块,用于获取需要失效的非主线程的地址;
标识设置模块,用于依据所述地址获取模块获取的需要失效的非主线程的地址,利用非主线程地址对象,调用删除cancel函数,将所述需要失效的非主线程的状态标识位标记为删除状态;
判断模块,用于接收到对所述非主线程进行操作时,判断所述非主线程的状态标识位是否为删除状态;
操作执行模块,用于在所述判断模块判断为是时,不执行对所述非主线程的操作;在所述判断模块判断为否时,执行对所述非主线程的操作。
5.如权利要求4所述的非主线程失效的装置,其特征在于,所述地址模块具体用于对于采用[[NSThread alloc][initWithTarget:selector:object:]]创建的非主线程,分配一个空间保存该非主线程的地址,并将所述空间的地址作为该需要失效的非主线程的地址。
6.如权利要求4所述的非主线程失效的装置,其特征在于,所述地址获取模块具体用于对于采用[NSThread detachNewThreadSelector:toTarget:withObject:]创建的非主线程,在非主线程运行的过程中,采用NSThtead类的类方法[NSThread currentThread]获取该非主线程的地址。
CN2011104344090A 2011-12-22 2011-12-22 一种非主线程失效方法及装置 Pending CN102609308A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011104344090A CN102609308A (zh) 2011-12-22 2011-12-22 一种非主线程失效方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011104344090A CN102609308A (zh) 2011-12-22 2011-12-22 一种非主线程失效方法及装置

Publications (1)

Publication Number Publication Date
CN102609308A true CN102609308A (zh) 2012-07-25

Family

ID=46526702

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011104344090A Pending CN102609308A (zh) 2011-12-22 2011-12-22 一种非主线程失效方法及装置

Country Status (1)

Country Link
CN (1) CN102609308A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598858A (zh) * 2016-12-14 2017-04-26 合网络技术(北京)有限公司 资源调用分析方法及装置
CN112882943A (zh) * 2021-03-11 2021-06-01 腾讯音乐娱乐科技(深圳)有限公司 界面更新崩溃风险检测方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1514354A (zh) * 2002-12-31 2004-07-21 ����̩ƽ 面向构件基于系统内核的进程池/线程池管理方法
CN1519712A (zh) * 2003-01-22 2004-08-11 北京科泰世纪科技有限公司 基于工作例程/主导例程与代理构件在本地/远程运行线程/进程的方法
CN101114252A (zh) * 2006-07-25 2008-01-30 中兴通讯股份有限公司 管理线程异常的防护方法
CN101355577A (zh) * 2008-09-01 2009-01-28 中兴通讯股份有限公司 一种多线程通讯程序中防止线程吊死的方法
CN101866300A (zh) * 2009-04-14 2010-10-20 上海科泰世纪科技有限公司 线程托管函数的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1514354A (zh) * 2002-12-31 2004-07-21 ����̩ƽ 面向构件基于系统内核的进程池/线程池管理方法
CN1519712A (zh) * 2003-01-22 2004-08-11 北京科泰世纪科技有限公司 基于工作例程/主导例程与代理构件在本地/远程运行线程/进程的方法
CN101114252A (zh) * 2006-07-25 2008-01-30 中兴通讯股份有限公司 管理线程异常的防护方法
CN101355577A (zh) * 2008-09-01 2009-01-28 中兴通讯股份有限公司 一种多线程通讯程序中防止线程吊死的方法
CN101866300A (zh) * 2009-04-14 2010-10-20 上海科泰世纪科技有限公司 线程托管函数的方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598858A (zh) * 2016-12-14 2017-04-26 合网络技术(北京)有限公司 资源调用分析方法及装置
CN106598858B (zh) * 2016-12-14 2019-10-22 合一网络技术(北京)有限公司 资源调用分析方法及装置
CN112882943A (zh) * 2021-03-11 2021-06-01 腾讯音乐娱乐科技(深圳)有限公司 界面更新崩溃风险检测方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US8813073B2 (en) Compiling apparatus and method of a multicore device
EP3140728B1 (en) Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media
JP2012522320A5 (zh)
CN102831088A (zh) 基于混合存储器的数据迁移方法和装置
EP3217406B1 (en) Memory management method and device, and memory controller
CN104252405A (zh) 日志信息的输出方法及装置
WO2016183028A3 (en) Methods and architecture for enhanced computer performance
WO2006095184A3 (en) Data processing system
US8626955B2 (en) Directing packets to a processor unit
CN106528893B (zh) 数据同步方法及装置
RU2015120595A (ru) Динамический выбор уровней хранилища
GB2510792A (en) Providing state storage in a processor for system management mode
MY122682A (en) System and method for performing context switching and rescheduling of a processor
CN107844187A (zh) 功耗管理方法、装置及电子设备
CN103019861A (zh) 虚拟机分配方法及装置
EP3186704B1 (en) Multiple clustered very long instruction word processing core
CN106897299B (zh) 一种数据库访问方法及装置
JP2017515232A5 (zh)
US8127116B2 (en) Dependency matrix with reduced area and power consumption
CN103902364A (zh) 一种物理资源管理方法、装置及智能终端设备
JP2012150583A5 (zh)
SG135132A1 (en) Global switch resource manager
JP2014235746A (ja) マルチコア装置及びマルチコア装置のジョブスケジューリング方法
CN102609308A (zh) 一种非主线程失效方法及装置
CN104391736A (zh) 虚拟机的休眠模式设置方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road, room 9 building on the north side of block A901 No. 006 TCL Industry Research Institute building A A Building 8 floor

Applicant after: Shenzhen Wondershare Information Technology Co., Ltd.

Address before: 518057 Guangdong city of Shenzhen province Nanshan District Gao Xin Road Building A block 8 Building TCL

Applicant before: Shenzhen Wondershare Software Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: SHENZHEN WONDERSHARE SOFTWARE CO., LTD. TO: SHENZHEN WONDERSHARE INFORMATION TECHNOLOGY CO., LTD.

C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120725