测试代码

测试代码请访问 Gist

测试结果

  • NSLock: 2.694002 sec
  • pthread_mutex: 1.761547 sec
  • OSSpinlock: 0.362136 sec
  • @synchronized: 6.849070 sec

对iOS锁的一些研究-LMLPHP

可以看出来,用synchronized效率是最低的,而OSSpinlock效率高到无法直视。

详解synchronized OSSpinlock

结论

如果只是粗略的使用锁,不考虑性能问题可以使用synchronized。

如果对效率有较高的要求,还是采用OSSpinlock比较好。

因为Pthread的锁在也是用 OSSpinlock 实现的。OSSpinlock 的实现过程中,并没有进入系统kernel,使用OSSpinlock可以节省系统调用和上下文切换。


resources

@synchronized, NSLock, pthread, OSSpinLock showdown, done right

第四章 线程同步

Coneboy版权所有

转载注明出处

西安 iOS 开发

测试代码

05-27 09:31