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

iOS線程同步(各種鎖)

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

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

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

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

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

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

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

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

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

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

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

還是和以前一樣的訪問frame,只不過一定要等autolayout完成之后再去訪問。 事實(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é)合使用,相對來說有點(diǎn)復(fù)雜。

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

1、自旋鎖:線程一直是running(加鎖——解鎖),死循環(huán)(忙等 do-while)檢測鎖的標(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 下面就看一下適用場景 此鎖可以在同一線程中多次被使用,但要保證加鎖與解鎖使用平衡,多用于遞歸函數(shù),防止死鎖。

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

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

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

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

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

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

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

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

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

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

廣告

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

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