大型局域网中二层结构与三层结构
2014-11-26 19:26
197 查看
接上节,为了解决一、二两节出现的缺陷,Peterson锁实现出现了,这是一个经典的双线程锁实现,请看代码:
证明:此lock算法满足互斥。
不是一般性,如果线程A进入了 临界区,要么currentThreadId != flag,即线程B重置了flag,要么b[1 - currentThreadId] == false,即B线程执行完unlock方法,已经推出临界区。
public class PertersonLockImpl implements Lock { private volatile boolean[] b = new boolean[2]; private volatile int flag = 0; public void init() { b[0] = false; b[1] = false; } public void lock() { int currentTheradId = ThreadUtil.getCurrentId(); b[currentThreadId] = true; flag = currentThreadId; while(currentThreadId == flag && b[1 - currentThreadId]) { } } public void unlock() { int currentThreadId = ThreadUtil.getCurrentId(); b[currentThreadId] = false; } }
证明:此lock算法满足互斥。
不是一般性,如果线程A进入了 临界区,要么currentThreadId != flag,即线程B重置了flag,要么b[1 - currentThreadId] == false,即B线程执行完unlock方法,已经推出临界区。
相关文章推荐
- 大型局域网二层三层结构比较 推荐
- 大型银行核心网络的三层结构设计
- 大型银行核心网络的三层结构设计
- 请问什么是B/S结构,什么是二层结构,什么是三层结构?
- 黑马程序员_学习日记53_625三层项目(FTP相关操作、递归TreeView、三层结构)
- 交换机二层交换与三层交换技术比较
- ASP.NET中"三层结构"的概念及环境!
- 构建一个.net Remoting 程序(真正的三层结构)-转自.net俱乐部
- 139团队(大型研发团队,大型敏捷开发团队,大型团队结构,敏捷绩效管理)
- 【转载】用MS.NET开发三层结构应用程序
- 三层体系结构与数据库编程
- PHP三层结构(下)——PHP实现AOP
- 三层结构的理解
- 【JavaWeb】Jsp开发模式和JavaWeb经典三层结构
- 二层设备与三层设备的区别--总结
- 二层三层转发学习
- JavaEE 三层结构
- C/S、B/S及三层结构
- 【转】用winpcap实现局域网DNS欺骗之二(DNS包的包结构)
- 三层Web体系结构里的两种数据绑定模式