前言
創(chuàng)新互聯(lián)公司專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、羅甸網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為羅甸等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。不知道大家對throttle這個單詞是否看著眼熟,還是說對這個計算機(jī)基礎(chǔ)概念有很清晰的了解了。今天就來聊聊和throttle相關(guān)的一些技術(shù)場景。
定義
我經(jīng)常有一種感覺,對于英語這門語言的語感,會影響我們對于一些關(guān)鍵技術(shù)概念的理解。有時候在學(xué)習(xí)新技術(shù)知識的時候,我會先花一些時間去了解術(shù)語英文單詞的各種語義,在形成強(qiáng)烈清晰的語感之后,再去深入具體的技術(shù)語境。throttle也算是個生僻的單詞,至少在口語中畢竟少用到,先來看看詞義:
a device controlling the flow of fuel or power to an engine.
中文翻譯是節(jié)流器,一種控制流量的設(shè)備。對應(yīng)到我們計算機(jī)世界,可以理解成,一種控制數(shù)據(jù)或者事件流量大小的機(jī)制。這么說可能還是有些抽象,再來看看一些具體的技術(shù)場景加深理解。
場景一:GCD Background Queue
話說GCD幾乎是iOS面試的必問題,也是個送分題:)。
我一般會機(jī)械式的先問:GCD有哪幾種Queue?回答:串行Queue和并行Queue。
我繼續(xù)問:Global Queue有哪幾種優(yōu)先級?回答:有幾種吧,大概記得Default,Low,High吧。
我雙眉一挑,進(jìn)一步試探:不知道少俠有沒有研究過DISPATCH_QUEUE_PRIORITY_BACKGROUND作何用?問完立即豎起耳朵,殷殷期盼縈繞于心的關(guān)鍵字。如果能聽到「I/O Throttle 呀!」,我會瞬間覺得面試氣氛被點(diǎn)亮了。
當(dāng)然啦,答不出I/O Throttle并不能說明技術(shù)不扎實(shí),但能答出來,至少表明對待技術(shù)是有好奇心的,加分!
官方文檔如是說:
Items dispatched to the queue run at background priority; the queue is scheduled for execution after all high priority queues have been scheduled and the system runs items on a thread whose priority is set for background status. Such a thread has the lowest priority and any disk I/O is throttled to minimize the impact on the system.
那Disk I/O Throttle做什么用呢?按照上面這段描述,Disk I/O會impact system performance。
理解Disk I/O的影響需要補(bǔ)充一些大學(xué)課本上的知識。一次磁盤讀寫操作涉及到的硬件資源主要有兩個,CPU和磁盤。任務(wù)本身由CPU觸發(fā)和調(diào)度,讀操作發(fā)生時,CPU告知Disk去獲取某個地址的數(shù)據(jù),此時由于Disk的讀操作存在尋址延遲,CPU是處于I/O wait狀態(tài),一直維持到Disk返回數(shù)據(jù)為止。處于I/O wait狀態(tài)的CPU,此時并不能把這部分等待的時間用來處理其他任務(wù),也就是說這一段等待的CPU時間被“浪費(fèi)”了。而CPU是公共的系統(tǒng)資源,這部分資源的損耗自然會對系統(tǒng)的整體表現(xiàn)產(chǎn)生負(fù)面影響。即使Global Queue使用的是子線程,也會造成CPU資源的消耗。
如果把任務(wù)的Priority調(diào)整為DISPATCH_QUEUE_PRIORITY_BACKGROUND,那么這些任務(wù)中的I/O操作就被被控制,雖然具體的控制策略并沒有官方文檔描述(一種可能的策略是并發(fā)的Disk I/O變?yōu)榇械模?,但我們能確認(rèn)的是,部分I/O操作的啟動時間很有可能被適當(dāng)延遲,把更多的CPU資源騰出來處理其他任務(wù)(比如說一些系統(tǒng)資源的調(diào)度任務(wù)),這樣可以讓我們的系統(tǒng)更加穩(wěn)定高效。簡而言之,對于重度磁盤I/O依賴的后臺任務(wù),如果對實(shí)時性要求不高,放到DISPATCH_QUEUE_PRIORITY_BACKGROUND Queue中是個好習(xí)慣,對系統(tǒng)更友好。
實(shí)際上I/O Throttle還分為好幾種,有Disk I/O Throttle,Memory I/O Throttle,和Network I/O Throttle。語義類似只不過場景不同,繼續(xù)往下看。
場景二:ASIHttpRequest Network Throttle
早幾年讀ASIHttpRequest源碼的時候,讀到過一段有意思的代碼:
- (void)handleNetworkEvent:(CFStreamEventType)type { //... [self performThrottling]; //... }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站aaarwkj.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁題目:iOS編程學(xué)習(xí)中關(guān)于throttle的那些事-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article18/ccdidp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、定制開發(fā)、微信小程序、網(wǎng)站營銷、網(wǎng)站導(dǎo)航、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容