- 论坛徽章:
- 0
|
接着上面的。
其实也可以这么改造下:
- void PlayGame()
- {
- {
- Lock lk(&LoginLock)
- Login();
- }
- while(haveMoney())
- {
- Play();
- //这里可能会花费很多时间
- }
- }
复制代码
这样就可以及时的LockOff了,也就是destruct掉lk,但是个人感觉对于程序的可读性有些影响,不如
- void PlayGame()
- {
- LockOn(&LoginLock);
- Login();
- LockOff(&LoginLock);
- while(haveMoney())
- {
- Play();
- //这里可能会花费很多时间
- }
- }
复制代码 看起来一目了然些。而且感觉要求用大括号把局部对象括起来跟LockOn和LockOff要配对是一样的意思
不过你的这种思想确实不错,很感激。
顺带提一下,对于为了控制作用域而显式调用destructor的方式,如下的代码:
- void PlayGame()
- {
- Lock lk(&LoginLock)
- Login();
- lk.Lock::~Lock();
- while(haveMoney())
- {
- Play();
- //这里可能会花费很多时间
- }
- }
复制代码
你我估计都不会去采用吧,因为这跟显式LockOn和LockOff没区别。
[ 本帖最后由 duanjigang 于 2007-6-21 09:46 编辑 ] |
|