zoukankan      html  css  js  c++  java
  • 原子性和非原子性

    • nonatomic:非原子属性,线程不安全的,效率高
    • atomic:原子属性,线程安全的,效率相对低。
    • 原子属性是一种单(线程)写多(线程)读的多线程技术,不过可能会出现脏数据

      • atomic属性内部的锁称为 自旋锁
      • 凡是线程安全的对象,内部肯定会加锁。

    • 自旋锁和互斥锁 
      • 相同点:都能保证同一时间只有一个线程访问共享资源。都能保证线程安全。
      • 不同点: 
        • 互斥锁:如果共享数据已经有其他线程加锁了,线程会进入休眠状态等待锁。一旦被访问的资源被解锁,则等待资源的线程会被唤醒。
        • 自旋锁:如果共享数据已经有其他线程加锁了,线程会以死循环的方式等待锁,一旦被访问的资源被解锁,则等待资源的线程会立即执行。
      • 自旋锁的效率高于互斥锁。

    IOS开发建议

      • 所有属性都声明为nonatomic
      • 尽量避免多线程抢夺同一块资源
      • 尽量将加锁、资源抢夺的业务逻辑交给服务器端处理,减少移动客户端的压力
  • 相关阅读:
    C# 延时不卡界面
    C++ 转C#
    CYQ数据库配置
    VB Modbus RTU CRC 校验
    开始写博客了
    简单工厂模式
    单例模式
    基础、hibernate目前应用的对比
    QT Creator 代码自动补全---快捷键设定
    C# CMD直接运行语句
  • 原文地址:https://www.cnblogs.com/moxuexiaotong/p/5250927.html
Copyright © 2011-2022 走看看