会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
在路上的牛
永远在路上......
博客园
首页
新随笔
联系
管理
订阅
2014年10月8日
用CAS操作实现Go标准库中的Once
摘要: Go标准库中提供了Sync.Once来实现“只执行一次”的功能。学习了一下源代码,里面用的是经典的双重检查的模式:```// Once is an object that will perform exactly one action.type Once struct { m Mutex do...
阅读全文
posted @ 2014-10-08 09:45 在路上的牛
阅读(1703)
评论(0)
推荐(0)
2008年12月2日
谈谈多线程编程(二)- 不变对象
摘要: 不变对象是指对象的状态在构造后不可改变。这从根本上消除了线程间同步的需求,与锁或者阻塞策略不同的是,不变对象对运行时和设计时不会带来任何额外的开销,因此不变对象是多线程编程中一个很基本的策略。
阅读全文
posted @ 2008-12-02 10:13 在路上的牛
阅读(2078)
评论(3)
推荐(1)
2008年12月1日
谈谈多线程编程(一)- 安全性策略
摘要: 在多线程编程中,安全是我们考虑的最重要的因素。通常程序员都会使用锁来满足安全要求,但是只用锁并不能写出良好的多线程代码,因此我们有必要更深入一点,对线程安全策略进行更加全面的了解。首先谈谈影响线程安全的因素:影响线程安全的因素有三个因素影响到了多线程下的安全性:原子性、可见性和指令顺序 一个原子操作是单独的、不可分割的。但是高级语言中的大多数语句,包括一些简单的读写语句,都不具有原子性,最常见的例...
阅读全文
posted @ 2008-12-01 18:51 在路上的牛
阅读(2211)
评论(10)
推荐(0)
2008年11月28日
对并发/并行编程的总结
摘要: 1. 并发和并行:一个好的并发算法未必是一个好的并行算法2. 并发编程的2个设计要点:安全和性能,在多CPU环境下还要考虑可扩展性3. 安全性: a. 最常见的方法是要求对象在任意时刻都应该满足一致的状态(不变约束) b. 在某些无阻塞算法中,允许对象暂时处于不一致状态,但是应该在运行中检测并立刻修正它4. 影响安全的因素:原子性、可见性和指令顺...
阅读全文
posted @ 2008-11-28 10:29 在路上的牛
阅读(446)
评论(0)
推荐(0)
2008年11月24日
使用CAS来实现个单例模式
摘要: 在学习Java并发编程的时候看到了单例的讨论,发现CAS挺适应这个场合的,于是顺手写了个简单的,实现了延迟实例化和多线程安全,也算是无锁的一种用法吧:[代码]
阅读全文
posted @ 2008-11-24 18:59 在路上的牛
阅读(1253)
评论(3)
推荐(1)
2008年11月20日
基于无锁的C#并发队列实现
摘要: 在多核时代,无锁编程是一种重要的并发编程方法,这里提供了一个C#实现的无锁并发队列,基于Michael-Scott算法。
阅读全文
posted @ 2008-11-20 18:32 在路上的牛
阅读(10436)
评论(15)
推荐(2)
2008年3月24日
C#3.0中的“多重继承”
摘要: C#不支持多继承,只支持多接口实现,这在某些情况下带来了一些不便。现在在C#3.0中,我们可以利用C#3.0的扩展方法来实现一个“受限的多继承”。 C#3.0中引入了扩展方法,可以利用一个静态类的静态方法为一个类或者接口添加方法,关键是:添加的方法是包含实现的,由此我们可以在C#3.0中为接口提供一个带实现的方法声明,而无需额外的实现类。如果一个类实现了多个这样的接口,就可以达到类似多继承的效果。
阅读全文
posted @ 2008-03-24 19:48 在路上的牛
阅读(3017)
评论(14)
推荐(0)
公告