Amino CBB (Concurrent Building Blocks) 類庫將提供優化后的并發線程組件,適用于JDK6.0 及其以后的版本。
Amino Java 類庫將涉及下面四個方面的內容:
1) 數據結構
該組件將提供一套免鎖的集合類。因為這些數據結構采用免鎖的運算法則來生成,所
以,它們將擁有基本的免鎖組件的特性,如可以避免不同類型的死鎖,不同類型的線程初始
化順序等。
2) 并行模式
Amino 將為應用程序提供一個或幾個大家熟知的并行計算模式。采用這些并行模式可
以使開發者起到事半功倍的效果,這些模式包括 Master-Worker、Map-reduce、Divide and
conquer, Pipeline 等,線程調度程序可以與這些模式類協同工作,提供了開發效率。
3) 并行計算中的一般功能
Amino 將為應用程序提供并行計算中常用的方法,例如:
a. String、Sequence 和Array 的處理方面。如Sort、Search、Merge、Rank、Compare、
Reverse、 Shuffle、Rotate 和Median 等
4)原子和STM(軟件事務內存模型)
--------------------------------
在Amino 類庫中,主要算法將使用鎖無關的(Lock-Free)的數據結構。
原語Compare-and-swap(CAS) 是實現鎖無關數據結構的通用原語。CAS 可以原子
地比較一個內存位置的內容及一個期望值,如果兩者相同,則用一個指定值取替這個內存位
罝里的內容,并且提供結果指示這個操作是否成功。
CAS 操作過程是:當處理器要更新一個內存位置的值的時候,它首
先將目前內存位置的值與它所知道的修改前的值進行對比(要知道在多處理的時候,你要更
新的內存位置上的值有可能被其他處理更新過,而你全然不知),如果內存位置目前的值與
期望的原值相同(說明沒有被其他處理更新過),那么就將新的值寫入內存位置;而如果不
同(說明有其他處理在我不知情的情況下改過這的值咯),那么就什么也不做,不寫入新的
值(現在最新的做法是定義內存值的版本號,根據版本號的改變來判斷內存值是否被修改,
一般情況下,比較內存值的做法已經滿足要求了)。CAS 的價值所在就在于它是在硬件級別
實現的,速度那是相當的快。
項目主頁:http://www.open-open.com/lib/view/home/1361839469849