45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:Double Checked Locking模式的详细介绍

Double Checked Locking模式的详细介绍

2016-08-29 09:09:02 来源:www.45fan.com 【

Double Checked Locking模式的详细介绍

之前在使用Double Check Locking 模式时,发现自己还是不太理解。于是写个记录,其实很简单,一看就明白了。

应用特别说明:

1.Double Check Locking模式是singleton的多线程版本,如果是单线程则应使用singleton。

2.Double Check Locking模式依就会使用锁——临界区锁定,不要以为可以避免使用锁。

3.Double Check Locking 解决的问题是:当多个线程存在访问临界区企图时,保证了临界区只需要访问一次。

下面是其适用特点:

1.多个线程试图并发访问一个临界区;

2.临界区只需执行一次;

分析如下3种方法:

//class singleton

//:s1-

singleton* get_instance(void)

{

lock();

if( instance == 0) {

instance = new singleton;

}

unlock();

return instance;

}

**存在的问题是:无论是否已经初始化都要加锁,增加了负荷,已经没有所谓的并发性能了。

//:s-2

singleton* get_instance(void)

{

if( instance == 0){

lock();

instance = new singleton;

unlock();

}

return instance;

}

**存在的问题是:不能保证临界区只初始化一次,没能实现singleton的基本功能;

//:s-3

singleton* get_instance(void)

{

if( instance == 0){

lock();

if( instance == 0 )

instance = new singleton;

unlock();

}

return instance;

}

**解决路上述问题——双检锁模式。
 

本文地址:http://www.45fan.com/a/question/69127.html
Tags: Double Checked Locking
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部