精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:存儲企業(yè)動態(tài) → 正文

Swift內(nèi)存所有權(quán)宣言

責任編輯:editor006 作者:Sergio De Simone |來源:企業(yè)網(wǎng)D1Net  2017-03-08 16:43:45 本文摘自:INFOQ

根據(jù)Chris Lattner介紹,Swift 4的主要目標之一就是要定義一個類似于Rust/Cyclone的內(nèi)存所有權(quán)模型(Memory Ownership Model)。Chris Lattner是Swift的創(chuàng)建者,在跳槽到Tesla之前曾擔任Swift團隊負責人。在Swift 4當前已進入第二階段的情況下,Swift團隊發(fā)布了一個宣言,詳細闡明了Swift內(nèi)存所有權(quán)的工作方式。

Swift編譯器為確定所有權(quán)轉(zhuǎn)換的時機,已實現(xiàn)了一種自己的不透明所有權(quán)模型(即ARC)。雖然所有權(quán)在一些情況下是很明晰的,但是編譯器也會在一些情況下做出錯誤假設(shè),進而導致不必要的復(fù)制。簡而言之,Swift的新內(nèi)存所有權(quán)模型使得內(nèi)存復(fù)制盡可能地處于開發(fā)人員的控制之下。定義該模型在于盡量克服當前寫時復(fù)制(copy-on-write)在引用計數(shù)方法上的不足之處,包括:引用計數(shù)的開銷及性能偶爾無法預(yù)測,以及為實現(xiàn)隨時可復(fù)制的需求而籠統(tǒng)地分配堆內(nèi)存。

雖然這些缺點通常對于應(yīng)用編程并不會構(gòu)成問題,但是對于那些需要一定性能保證的系統(tǒng)編程而言卻不受歡迎。此外,更靈活的內(nèi)存管理模型具有顯著優(yōu)點,這些優(yōu)點同樣適用于應(yīng)用編程,去解決特定瓶頸問題的優(yōu)化。基于上述原因,與ARC相比,選取Swift的新內(nèi)存所有權(quán)模型無疑會更具優(yōu)勢,只有那些對更細化控制有需求的開發(fā)人員才需要承擔模型的復(fù)雜性代價。

“獨占性原則”(Law of Exclusivity)會影響到所有的Swift開發(fā)人員,這一更改并非可選擇添加的。它強制變量不能以沖突的方式同時訪問,典型情況包括變量作為inout參數(shù)傳入兩個不同函數(shù),以及方法所接收的回調(diào)訪問了方法所調(diào)用的同一變量。這兩種情況當前在Swift中是允許的,移除他們無疑將會影響到所有的開發(fā)人員。此外,獨占性原則會更改對參數(shù)所做的保證,進而影響到語言的應(yīng)用二進制接口(ABI),因此它會成為被率先采用的特性之一。

除了獨占性原則之外,Swift還將引入新的標注和語言特性,允許傳遞共享值以及表達無法隱式復(fù)制的類型。宣言的作者指出。在獨占性、顯示控制共享值傳遞和不可復(fù)制類型這三種機制的共同作用下,編譯器可以對代碼做更好的優(yōu)化。

簡而言之,可以將新Swift所有權(quán)模型的高層愿景概括如下:

如上所述,編譯器將會標注所有非獨占性使用的inout參數(shù),無論是顯式的還是隱式的。

開發(fā)人員將可以定義一個變量是具有所有權(quán)的還是共享的,以避免在進入或離開詞法作用域時引用計數(shù)和做不必要的拷貝/銷毀。

開發(fā)人員將可以定義moveonly(即不可拷貝)類型,該類型對編譯器不可復(fù)制,也不能用于創(chuàng)建更多的引用。moveonly類型具有move語義,被認為是一種高級特性。除此以外,所有類型將默認是可復(fù)制的。

宣言中為這一所有權(quán)模型定義所賦予Swift的全部特性給出了長篇的和詳細的分析,宣言的細節(jié)內(nèi)容仍非最終版本。Swift開發(fā)人員Alexis Beingessner發(fā)布了一篇更簡短的文檔,扼要地概括了宣言的要點。

查看英文原文: Swift Memory Ownership Manifesto

關(guān)鍵字:Swift內(nèi)存管理

本文摘自:INFOQ

x Swift內(nèi)存所有權(quán)宣言 掃一掃
分享本文到朋友圈
當前位置:存儲企業(yè)動態(tài) → 正文

Swift內(nèi)存所有權(quán)宣言

責任編輯:editor006 作者:Sergio De Simone |來源:企業(yè)網(wǎng)D1Net  2017-03-08 16:43:45 本文摘自:INFOQ

根據(jù)Chris Lattner介紹,Swift 4的主要目標之一就是要定義一個類似于Rust/Cyclone的內(nèi)存所有權(quán)模型(Memory Ownership Model)。Chris Lattner是Swift的創(chuàng)建者,在跳槽到Tesla之前曾擔任Swift團隊負責人。在Swift 4當前已進入第二階段的情況下,Swift團隊發(fā)布了一個宣言,詳細闡明了Swift內(nèi)存所有權(quán)的工作方式。

Swift編譯器為確定所有權(quán)轉(zhuǎn)換的時機,已實現(xiàn)了一種自己的不透明所有權(quán)模型(即ARC)。雖然所有權(quán)在一些情況下是很明晰的,但是編譯器也會在一些情況下做出錯誤假設(shè),進而導致不必要的復(fù)制。簡而言之,Swift的新內(nèi)存所有權(quán)模型使得內(nèi)存復(fù)制盡可能地處于開發(fā)人員的控制之下。定義該模型在于盡量克服當前寫時復(fù)制(copy-on-write)在引用計數(shù)方法上的不足之處,包括:引用計數(shù)的開銷及性能偶爾無法預(yù)測,以及為實現(xiàn)隨時可復(fù)制的需求而籠統(tǒng)地分配堆內(nèi)存。

雖然這些缺點通常對于應(yīng)用編程并不會構(gòu)成問題,但是對于那些需要一定性能保證的系統(tǒng)編程而言卻不受歡迎。此外,更靈活的內(nèi)存管理模型具有顯著優(yōu)點,這些優(yōu)點同樣適用于應(yīng)用編程,去解決特定瓶頸問題的優(yōu)化。基于上述原因,與ARC相比,選取Swift的新內(nèi)存所有權(quán)模型無疑會更具優(yōu)勢,只有那些對更細化控制有需求的開發(fā)人員才需要承擔模型的復(fù)雜性代價。

“獨占性原則”(Law of Exclusivity)會影響到所有的Swift開發(fā)人員,這一更改并非可選擇添加的。它強制變量不能以沖突的方式同時訪問,典型情況包括變量作為inout參數(shù)傳入兩個不同函數(shù),以及方法所接收的回調(diào)訪問了方法所調(diào)用的同一變量。這兩種情況當前在Swift中是允許的,移除他們無疑將會影響到所有的開發(fā)人員。此外,獨占性原則會更改對參數(shù)所做的保證,進而影響到語言的應(yīng)用二進制接口(ABI),因此它會成為被率先采用的特性之一。

除了獨占性原則之外,Swift還將引入新的標注和語言特性,允許傳遞共享值以及表達無法隱式復(fù)制的類型。宣言的作者指出。在獨占性、顯示控制共享值傳遞和不可復(fù)制類型這三種機制的共同作用下,編譯器可以對代碼做更好的優(yōu)化。

簡而言之,可以將新Swift所有權(quán)模型的高層愿景概括如下:

如上所述,編譯器將會標注所有非獨占性使用的inout參數(shù),無論是顯式的還是隱式的。

開發(fā)人員將可以定義一個變量是具有所有權(quán)的還是共享的,以避免在進入或離開詞法作用域時引用計數(shù)和做不必要的拷貝/銷毀。

開發(fā)人員將可以定義moveonly(即不可拷貝)類型,該類型對編譯器不可復(fù)制,也不能用于創(chuàng)建更多的引用。moveonly類型具有move語義,被認為是一種高級特性。除此以外,所有類型將默認是可復(fù)制的。

宣言中為這一所有權(quán)模型定義所賦予Swift的全部特性給出了長篇的和詳細的分析,宣言的細節(jié)內(nèi)容仍非最終版本。Swift開發(fā)人員Alexis Beingessner發(fā)布了一篇更簡短的文檔,扼要地概括了宣言的要點。

查看英文原文: Swift Memory Ownership Manifesto

關(guān)鍵字:Swift內(nèi)存管理

本文摘自:INFOQ

電子周刊
回到頂部

關(guān)于我們聯(lián)系我們版權(quán)聲明隱私條款廣告服務(wù)友情鏈接投稿中心招賢納士

企業(yè)網(wǎng)版權(quán)所有 ©2010-2024 京ICP備09108050號-6 京公網(wǎng)安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 浙江省| 梅州市| 昂仁县| 德安县| 金山区| 綦江县| 兰坪| 广汉市| 祁连县| 嘉义县| 绩溪县| 新建县| 连山| 巫溪县| 繁峙县| 冷水江市| 明水县| 博罗县| 台南县| 响水县| 日照市| 江门市| 平安县| 米林县| 伊吾县| 页游| 铜梁县| 公安县| 垫江县| 焦作市| 烟台市| 金华市| 大同县| 印江| 昌宁县| 崇明县| 安义县| 琼海市| 贡觉县| 华亭县| 墨玉县|