溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

.NET 4.0 Beta新增的STM特性是什么

發(fā)布時間:2021-10-28 15:49:08 來源:億速云 閱讀:124 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關(guān).NET 4.0 Beta新增的STM特性是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

微軟發(fā)布了.NET 4.0 Beta 1的一個單獨的新版本,其中包含了STM.NET,也就是Software Transactional Memory。通常我們使用基于鎖的同步機制來控制對共享內(nèi)存的訪問,STM則是鎖之外的另一種選擇。

微軟將STM.NET定義為:

Software Transactional Memory(STM.NET)是一種可以高效隔離共享狀態(tài)的機制。開發(fā)人員可以將一段代碼標記為“原子”事務(wù),并與其它并行運行的事務(wù)代碼“隔離”開來。

內(nèi)存事務(wù)(Transactional memory)在學術(shù)界被認為是一項有前途的技術(shù),并且在當前利用多核硬件提高程序擴展性的大潮中,也做為一項受歡迎的技術(shù)被反復提及,其目的是使應(yīng)用程 序開發(fā)人員可以利用STM的并發(fā)功能,將那些由專家開發(fā)的組件組合在一起,內(nèi)存事務(wù)使這變得簡單而安全。

STM使用樂觀并發(fā)機制來控制對共享內(nèi)存的訪問,在線程可以安全的修改共享數(shù)據(jù)前,不會一直阻塞線程,而是在線程訪問共享數(shù)據(jù)時,將讀寫操作記錄在日志 中。然后,它會檢查是否有另一個線程正好在同一時刻訪問共享數(shù)據(jù)。如果沒有,這些改變將會被提交并***生效;否則,事務(wù)將會被取消,所有的修改都將撤銷。

STM.NET使用Atomic.Do()將一段代碼標記為一個事務(wù):

Atomic.Do(()=> {     <statememts>  });

STM與鎖機制一樣會導致系統(tǒng)性能降低,這是因為它需要維護讀寫日志,而且提交時會花費額外的時間。一些人認為STM比鎖更容易使用,因此在易用性上的優(yōu)勢足以抵消性能上的降低。在一項名為《事務(wù)編程真的容易么?》的研究中,來自奧斯丁德克薩斯大學的Christopher J. Rossbach、Owen S. Hofmann和 Emmett Witchel比較了STM與鎖的學習和開發(fā)過程:

一般來說,內(nèi)存事務(wù)比簡單的鎖需要更多的開發(fā)時間,但少于細致的鎖和條件同步。

我們發(fā)現(xiàn)在更復雜的情況下,簡單的鎖和事務(wù)所用的時間要少于細致的鎖。這體現(xiàn)了事務(wù)的初衷,在需要多個鎖的情況下,減少編碼、調(diào)試和鎖順序的復雜性。

這項研究總結(jié)道

這證明了即使新手在理解事務(wù)方面可能存在困難,但事務(wù)編程比高性能的鎖更安全。對學生的主觀評測顯示,他們認為事務(wù)內(nèi)存比簡單的鎖要難一些,但是比細致的 鎖和條件同步簡單。然而在學生寫的代碼中,同步錯誤的比率呈現(xiàn)出戲劇化的結(jié)果。對于相似的編程問題,使用事務(wù)比使用鎖更容易得到正確的結(jié)果。

系統(tǒng)配置需求:Visual Studio 2008,Windows Installer 3.1以上, Internet Explorer 5.01以上。目前STM.NET只支持C#。

關(guān)于.NET 4.0 Beta新增的STM特性是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI