在开发过程中,为了访问互斥资源或者更细粒度的串行控制, 一般都会使用锁机制。使用最多的应该是
@synchronized, Semaphore, ConditionLock
@synchronized使用起来比较方便, 但是如果访问互斥资源的频率较高,这样做的话效率就比较低了
semaphore我相对使用较多, 但是过程中也遇到不少的坑, 最近就在使用不当上遭遇了crash
系统报(sigill)错误, 指令无法执行
查看crash日志。 发现几行比较重要的标记:
__dispatch_semaphore_dispose:
000040a0 b590 push {
r4,