240 发简信
IP属地:广东
  • @Sweet丶 不公平锁不发生优先级反转的原因:
    "最大自旋限制": "硬件相关的合理值",
    "优先级继承": "自动提升锁持有者优先级",
    "QoS传播": "跨线程的服务质量传递",
    "调度器提示": "告诉调度器线程在等待锁"

    iOS开发中的锁

    在开发中当遇到一些耗时的操作时我们经常会开启一个子线程,这样来提升执行效率、避免主线程卡顿。但是使用子线程时会涉及到资源抢夺的问题,给要执行的代码加锁是问题的解决方式,下面就...

  • @Sweet丶 在等待锁的过程中,自旋锁是忙等待,一直主动循环检查锁;互斥锁是等待时进入休眠,需要系统调度唤醒;不公平锁:短暂自旋(几十纳秒),如果还没获取到,线程进入休眠

    iOS开发中的锁

    在开发中当遇到一些耗时的操作时我们经常会开启一个子线程,这样来提升执行效率、避免主线程卡顿。但是使用子线程时会涉及到资源抢夺的问题,给要执行的代码加锁是问题的解决方式,下面就...

  • @Sweet丶 DispatchQueue实现的锁是基于队列管理机制而不是锁,
    基本步骤:// 1. 任务被提交到串行队列
    // 2. GCD从线程池选择空闲线程
    // 3. 线程按队列顺序执行任务
    // 4. 任务完成,线程返回线程池
    // 5. 没有锁竞争,只有任务调度

    iOS开发中的锁

    在开发中当遇到一些耗时的操作时我们经常会开启一个子线程,这样来提升执行效率、避免主线程卡顿。但是使用子线程时会涉及到资源抢夺的问题,给要执行的代码加锁是问题的解决方式,下面就...

  • unfairLock是性能最高的,但是不支持递归,不公平的意思是多个线程等待锁时,解锁后获取锁不按顺序

    iOS开发中的锁

    在开发中当遇到一些耗时的操作时我们经常会开启一个子线程,这样来提升执行效率、避免主线程卡顿。但是使用子线程时会涉及到资源抢夺的问题,给要执行的代码加锁是问题的解决方式,下面就...

  • // iOS/macOS 中的主要锁类型
    enum LockTypes {
    case mutex // 互斥锁
    case recursiveMutex // 递归互斥锁
    case spinlock // 自旋锁
    case unfairLock // 不公平锁
    case readWriteLock // 读写锁
    }

    iOS开发中的锁

    在开发中当遇到一些耗时的操作时我们经常会开启一个子线程,这样来提升执行效率、避免主线程卡顿。但是使用子线程时会涉及到资源抢夺的问题,给要执行的代码加锁是问题的解决方式,下面就...

  • 120
    iOS 动态库与静态库基础

    在iOS开发中,将特定功能代码封装在一个库中,对外提供接口调用,这样方便维护和集成,如网络库。库有静态库和动态库,我们在集成时该选择哪种?制作自己的库时,该如何指定? 一、问...

  • 120
    CocoaPods库的.podspec和.podspec.json

    一、前言 在制作pod库时,我们需要写好如上的.podspec文件, 但是我们看本地cocoapods的repos,发现里面都是json格式的.podspec, 那么它们有啥...

  • GitLab中用户的五种权限

    GitLab用户权限管理: GitLab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner1.Guest:可以创建issue、发...

  • 120
    iOS中Mach-O概览

    希望通过本文来记录对于iOS开发对Mach-O需要有的基本了解。 苹果推出Mach-O的背景:过渡至基于 Mach 内核的操作系统:苹果于 2001 年推出了 macOS(当...

  • 120
    iOS逆向06 -- Mach-O

    Mach-O文件 Mach-O是Mach Object文件格式的缩写,是mac以及iOS上可执行文件的格式,例如当Xcode App工程编译完成之后就会生成一个可执行文件,其...

  • Mac电脑磁盘清理方法

    如果我们只做iOS开发的话,一个256GB的磁盘是够了的。 一、只做iOS开发 如果我们出现下面的情况,就会不够用了:1.用同一个电脑做了几年,更新了N多个版本的Xcode,...

  • curl命令作用记录

    curl 是一个用于在命令行下进行数据传输的工具。它支持多种网络协议,包括HTTP、HTTPS、FTP、SMTP等,可以发送请求并接收服务器的响应数据。 以下是一些常用的 c...

  • __attribute__((constructor))与+load 方法哪个时机早

    给iOS APP做启动耗时统计,需要取一个较早的时机作为开始时间戳,我们很容易想到OC的+load, 那么有没有比这个更早的呢? 一、__attribute__((cons...

  • 120
    [iOS] App Store上的包大小

    前言:最近在了解 APP性能优化相关的一些知识,其中很重要的一个点就是包大小的优化,在做优化之前,我们需要搞清楚用户在 App Store上看到的包的大小是什么? 1. 用户...

  • The ‘Pods-XXX’ target has transitive dependencies that include statically linked binaries

    一、背景 将Swift工程依赖的三方库生成xcframework二进制库格式后,制作为pod私有库,然后工程改为依赖这个pod私有库。然后执行pod install,报错:T...

  • 120
    iOS 开发HEIC图标实践总结

    这里记录下自己了解的HEIC及其在iOS开发中的实践。 一、HEIC简介 HEIF(High Efficiency Image Format),即高效图像格式。HEIF是由M...

  • iOS 中的import

    一、从iOS中#import 、@import、#include说起 #include就是将目标.h文件中的内容拷贝到当前文件中,并替换掉这句#include。这样做可能会因...

  • iPhone各个版本CPU架构记录

    为了方便iOS开发兼容CPU不同架构,这里持续更新记录iPhone设备架构 一、iPhone各个版本的cpu架构如下: CPU架构对应的iPhone设备i386iphone5...