[發明專利]一種非主線程失效方法及裝置無效
| 申請號: | 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.szxzyx.cn/pat/books/201110434409.0/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種COREX爐渣配制的綠色混凝土
- 下一篇:改進結構的農作物秸稈收獲打捆機





