一句话笔记(44)(锁)

2020-04-29  本文已影响0人  天空中的球

一句话笔记,某段时间内遇到或看到的某个可记录的点。

一、自旋锁 和 互斥锁

pthread_mutex 表示互斥锁。互斥锁可以传入不同参数,实现递归锁pthread_mutex(recursive)。NSLock,NSCondition,NSRecursiveLock,NSConditionLock都是内部封装的pthread_mutex,即都属于互斥锁。@synchronized是NSLock的一种封装,牺牲了效率,简洁了语法。

OSSpinLock 表示自旋锁,从上图可以看到自旋锁的效率最高,但是现在的iOS因为优先级反转的问题,已经不安全,所以推荐使用pthread_mutex或者dispatch_semaphore

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        dispatch_sync(dispatch_get_main_queue(), ^(void){
            NSLog(@"这里死锁了");
        });
    }
    return 0;
}
二、setValue forkey 和 setObject forkey区别
setValue forKey :
setObject forKey:

笔记来源:setValue forkey 和 setObject forkey区别

三、堆栈信息无模块地址如何分析 Carsh

堆栈符号化还原有三种常见的方法:

  1. symbolicatecrash
  2. mac 下的 atos 工具
  3. 通过 dSYM 文件提取地址和符号的对应关系,进行符号还原

怎么收集 Carsh 日志,如果不使用第三方:

四、 NSArray MutableCopy 子项会改变吗

不会, 子项地址依然不变,除非对子项再一一处理,或者进行归档处理。

上一篇 下一篇

猜你喜欢

热点阅读