C/C++

               摘要: 意圖
          無論什么時候當臨界區(qū)中的代碼僅僅需要加鎖一次,同時當其獲取鎖的時候必須是線程安全的,可以用Double Checked Locking 模式來減少競爭和加鎖載荷。


          動機
          1、標準的單例。開發(fā)正確的有效的并發(fā)應(yīng)用是困難的。程序員必須學習新的技術(shù)(并發(fā)控制和防止死鎖的算法)和機制(如多線程和同步API)。此外,許多熟悉的設(shè)計模式(如單例和迭代子)在包含不使用任何并發(fā)上下文假設(shè)的順序程序中可以工作的很好。為了說明這點,考慮一個標準的單例模式在多線程環(huán)境下的實現(xiàn)。單例模式保證一個類僅有一個實例同時提供了全局唯一的訪問這個實例的入口點。在c++程序中動態(tài)分配單例對象是通用的方式,這是因為c++程序沒有很好的定義靜態(tài)全局對象的初始化次序,因此是不可移植的。而且,動態(tài)分配避免了單例對象在永遠沒有被使用情況下的初始化開銷。  閱讀全文

          posted @ 2006-09-13 23:16 killvin| 編輯 |

          主站蜘蛛池模板: 株洲县| 久治县| 吉木萨尔县| 化德县| 花莲县| 德安县| 大丰市| 安义县| 中山市| 鸡泽县| 阿拉善左旗| 大兴区| 浮山县| 彭泽县| 二连浩特市| 定南县| 定远县| 天祝| 格尔木市| 灵川县| 宜阳县| 诏安县| 嵊州市| 尉犁县| 连山| 屯昌县| 常州市| 吴忠市| 昌邑市| 页游| 井冈山市| 垣曲县| 武宁县| 宜川县| 鸡泽县| 莱阳市| 武宣县| 武鸣县| 清涧县| 丽江市| 商洛市|