找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3263|回复: 1

多线程编程中怎样进行同步设计?

[复制链接]
发表于 2008-9-11 17:25:01 | 显示全部楼层 |阅读模式
有两种可选方式:
1,在每一处可能会并发访问排它资源的地方进行同步。
比如 f() {
     ACE_Guard<ACE_Thread_Mutex> guard(lock);
     // 访问排他资源
}
其中f目前并没有被并发访问。但是考虑将来的可能性,进行了同步控制。
特点:这样的设计比较安全。今后即使运行方式有改动仍然安全。
2,在每一处确定会并发访问排它资源的地方进行同步。
上例可以改为
f() {
     // 访问排他资源
}
因为根据目前的线程执行次序,确定不会并发访问f。
特点:这样的设计性能比较好。因为减少了不必要的同步控制。但是给将来的维护带来麻烦,程序如果有改动就要考虑一遍这些留空的部分。

我的程序是按方式2写的,今天被这个问题害了一次,程序架构改了一下,发现有好多地方都需要增加同步,改起来工作量很大,而且很容易留下隐藏的问题。
现在感觉还是方式1比较好,因为正确和安全是第一位的。Make it right, then make it fast.
发表于 2008-9-11 17:28:14 | 显示全部楼层
认同。先让程序正确的工作和运行是第一位的。同步消耗是可以根据策略和一些方法,进行优化和消除的。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 22:02 , Processed in 0.020198 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表