设为首页 加入收藏

TOP

10.4.2 匿名synchronized
2013-10-07 15:05:12 来源: 作者: 【 】 浏览:82
Tags:10.4.2 匿名 synchronized

10.4.2  匿名synchronized

由对象控制的临界区还有一种麻烦情况,那就是有时候没有对象可以被用做锁。在这种情况下,你可以在局部作用域中声明一个静态对象,或者,更好的做法是,在临界区所在的文件中的匿名名字空间内声明一个全局对象。你也可以基于SYNCHRONIZED()宏使用的技术写一个SYNCHRONIZED_ANON()宏,它包含一个局部静态对象,但是这样的话你就可能会遇到一个可能的竞争条件,即两个或多个线程可能会同时试图执行该静态对象的"仅一次"的构造过程。这种情况并非没办法消除,我们将会在下一章讨论静态对象时看到解决这个问题所采用的技术,但最好的做法还是避开这个问题。因此,使用名字空间范围内的对象在这里是最佳选择。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇10.5.4 Tss库(1) 下一篇10.4.3 atomic

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: