ios開(kāi)發(fā)改變線程優(yōu)先級(jí) ios線程的幾種狀態(tài)

iOS線程同步(各種鎖)

線程的不安全是由于多線程訪問(wèn)和修改共享資源而引起的不可預(yù)測(cè)的結(jié)果。 ios多線程開(kāi)發(fā)中為保證線程的安全常用到的幾種鎖: NSLock 、 dispatch_semaphore 、 NSCondition 、 NSRecursiveLock 、 @synchronized 。

創(chuàng)新互聯(lián)專注于昭蘇網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供昭蘇營(yíng)銷型網(wǎng)站建設(shè),昭蘇網(wǎng)站制作、昭蘇網(wǎng)頁(yè)設(shè)計(jì)、昭蘇網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造昭蘇網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供昭蘇網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

自旋鎖:線程一直是running(加鎖——解鎖),死循環(huán)(忙等 do-while)檢測(cè)鎖的標(biāo)志位,機(jī)制不復(fù)雜。

分類:隊(duì)列分為串行、并行、主隊(duì)列、全局隊(duì)列。任務(wù)的執(zhí)行是在線程上去執(zhí)行的。分為同步和異步。所以就可以分成:串行隊(duì)列同步執(zhí)行、串行隊(duì)列異步執(zhí)行、并行隊(duì)列同步執(zhí)行、并行隊(duì)列異步執(zhí)行。

如性能方面要求不是非常高的話,使用該鎖還更簡(jiǎn)便。讀方法中的同步sync是為了柵欄函數(shù)讀寫(xiě)互斥。 讀寫(xiě)互斥,多讀單寫(xiě) [注意] 死鎖:當(dāng)前線程在串行隊(duì)列中,gcd同步(dispatch_sync)同一串行隊(duì)列,導(dǎo)致線程死鎖。

iOS 線程加鎖的方式具體有如下幾種:NSLock實(shí)現(xiàn)的鎖。

iOS的一個(gè)小技巧——AutoLayout約束的優(yōu)先級(jí)

首先,先創(chuàng)建一個(gè)簡(jiǎn)單地工程。如圖。這里我們選擇“SingleViewApplication”工程。名字就叫“ZYScreenTest”。位置選擇桌面就可以了。

可以,設(shè)置好約束,然后就可以在code中動(dòng)態(tài)調(diào)節(jié)label的大小了。

Resolved - Target - xcconfig - Project - iOS Default。順序是從右到左,cocoapods生成的xcconfig文件優(yōu)先級(jí)高于在target里的設(shè)置。

除了AutoLayout,AutoresizingMask也是一種布局方式。這個(gè)想必大家都有了解。默認(rèn)情況下,translatesAutoresizingMaskIntoConstraints = true , 此時(shí)視圖的AutoresizingMask會(huì)被轉(zhuǎn)換成對(duì)應(yīng)效果的約束。

還是和以前一樣的訪問(wèn)frame,只不過(guò)一定要等autolayout完成之后再去訪問(wèn)。 事實(shí)上采用auto layout后就應(yīng)該忘記frame,因?yàn)閒rame的值是動(dòng)態(tài)生成的。

在使用storyboard和xib時(shí),我們經(jīng)常要用到ScrollView,還有自動(dòng) 布局AutoLayout,但是ScrollView和AutoLayout 結(jié)合使用,相對(duì)來(lái)說(shuō)有點(diǎn)復(fù)雜。

iOS中的常見(jiàn)線程鎖總結(jié)

1、自旋鎖:線程一直是running(加鎖——解鎖),死循環(huán)(忙等 do-while)檢測(cè)鎖的標(biāo)志位,機(jī)制不復(fù)雜。

2、NSLock -- 互斥鎖 NSCondition -- 互斥鎖 生產(chǎn) -- 消費(fèi) 與NSLock同樣遵守NSLocking的協(xié)議,有同樣的lock、unlock的api。NSConditionLock -- 互斥鎖 是基于NSCondition進(jìn)一步封裝,自帶條件。

3、lockBeforeDate:方法會(huì)在所指定Date之前嘗試加鎖,如果在指定時(shí)間之前都不能加鎖,則返回NO。

4、NSConditionLock 用于需要根據(jù)一定條件滿足后進(jìn)行 加鎖/解鎖.首先看下API 下面就看一下適用場(chǎng)景 此鎖可以在同一線程中多次被使用,但要保證加鎖與解鎖使用平衡,多用于遞歸函數(shù),防止死鎖。

5、如果等待鎖的優(yōu)先級(jí)較高,它會(huì)一直占用著CPU的資源,優(yōu)先級(jí)低的線程就無(wú)法釋放鎖。 在iOS10被蘋(píng)果廢棄。

如何調(diào)整線程優(yōu)先級(jí)

1、,SCHED_OTHER 分時(shí)調(diào)度策略,2,SCHED_FIFO實(shí)時(shí)調(diào)度策略,先到先服務(wù)。一旦占用cpu則一直運(yùn)行。一直運(yùn)行直到有更高優(yōu)先級(jí)任務(wù)到達(dá)或自己放棄 3,SCHED_RR實(shí)時(shí)調(diào)度策略,時(shí)間片輪轉(zhuǎn)。

2、運(yùn)行時(shí)可以用過(guò)pthread_setschedparam()來(lái)改變。__schedparam成員是一個(gè)struct sched_param結(jié)構(gòu),目前僅有一個(gè)sched_priority整型變量表示線程的運(yùn)行優(yōu)先級(jí)。

3、Thread類中 setPriority(int newPriority)thread有三個(gè)常量 MAX_PRIORITY 線程可以具有的最高優(yōu)先級(jí)。MIN_PRIORITY 線程可以具有的最低優(yōu)先級(jí)。NORM_PRIORITY 分配給線程的默認(rèn)優(yōu)先級(jí)。

4、Thread類的setPriority(int level)方法設(shè)置線程的優(yōu)先級(jí)。優(yōu)先級(jí)別從1到10,1是最不重要的,10是最重要的。

5、Cocoa threads: 使用NSThread 或直接從 NSObject 的類方法 performSelectorInBackground:withObject: 來(lái)創(chuàng)建一個(gè)線程。如果你選擇thread來(lái)實(shí)現(xiàn)多線程,那么 NSThread 就是guan 方推薦優(yōu)先選用的方式。

6、新線程將繼承創(chuàng)建它的父線程的優(yōu)先級(jí)。另外用戶可以通過(guò)調(diào)用Thread類的方法setPriority()來(lái)修改系統(tǒng)自動(dòng)設(shè)定的線程優(yōu)先級(jí)。

文章標(biāo)題:ios開(kāi)發(fā)改變線程優(yōu)先級(jí) ios線程的幾種狀態(tài)
網(wǎng)頁(yè)路徑:http://bm7419.com/article28/dggoecp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站改版、搜索引擎優(yōu)化網(wǎng)站營(yíng)銷、用戶體驗(yàn)Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)