信号量和互斥体是多线程/进程中常用的同步手段,道理上说两者的使用都是越少越好,不停的得到锁和释放锁到底要耗掉多少时间。针对这个问题,特意做了个测试
POSIX命名信号量:
测试结果为:
real 0m1.786s
user 0m0.548s
sys 0m0.980s
POSIX 互斥体:
测试结果为:
real 0m0.136s
user 0m0.119s
sys 0m0.004s
机器配置:CPU:1.4G,RAM:512MB,SYS:vmware6.0+winxp+fedora7(linux-2.6.21)
以上分别对POSIX信号量和互斥体做100万次加锁和解锁操作,从测试结果来看,同步操作本身的性能已经很不错了,程序性能的损失更多的应该是体现在进程/线程相互等待过程中。