热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

atomic和nonatomic

因为是区别在于线程安全所以勉强可以算作是个多线程的面试题吧atomic是原子性操作,也是所谓的线程安全nonatomic是非原子操作,本质是必须加锁才能线程安全if(!ato

因为是区别在于线程安全所以勉强可以算作是个多线程的面试题吧

atomic是原子性操作,也是所谓的线程安全

nonatomic是非原子操作,本质是必须加锁才能线程安全

if (!atomic) {oldValue = *slot;*slot = newValue;
} else {spinlock_t& slotlock = PropertyLocks[slot];slotlock.lock();oldValue = *slot;*slot = newValue; slotlock.unlock();
}

其实也不用过多解释,看源码就知道了,这里会判断是否是atomic,是的话,就加把锁,同一时间只能一个线程进行修改

不建议用atomic,因为哪怕正常的调用也会加锁了,这代码效率就很低了,哪里需要就哪里加锁就好l


推荐阅读
  • Java性能优化策略详解
    在Java开发中,性能优化是提高应用程序响应速度和资源利用率的关键。本文详细探讨了多种Java性能优化技巧,包括合理使用单例模式、避免滥用静态变量、减少对象创建、使用final修饰符、合理管理线程同步等,旨在帮助开发者写出更加高效稳定的代码。 ... [详细]
  • 单例模式是软件开发中常用的设计模式之一,用于确保一个类只有一个实例,并提供一个全局访问点。本文探讨了在单例模式实现中使用volatile关键字的重要性,特别是在懒汉模式下的应用。 ... [详细]
  • 本文探讨了在渗透测试中信息收集阶段使用的几种端口扫描技术,包括nmap、masscan、socket、telnet及nc等工具的应用与比较。 ... [详细]
  • 本文整理了一系列Java面试问题,涵盖Java开发环境的分类、Java语言的核心特性、Linux环境下Java SE的安装步骤、常用的Java开发工具介绍,以及类与对象的基本概念等。 ... [详细]
  • 深入理解Java内存模型的核心原则
    本文详细解析了Java内存模型(JMM)的核心原则,包括原子性、可见性和有序性,并探讨了JMM如何通过特定机制保证这些特性,为开发者提供多线程编程的指导。 ... [详细]
  • 本文介绍了Java中实现多线程的两种基本方式:继承Thread类和实现Runnable接口。通过示例代码详细解析了线程的创建、启动以及线程的生命周期。同时,探讨了线程的执行顺序、线程安全及其实现方法。 ... [详细]
  • 深入解析JVM:类加载子系统详解
    本文旨在深入探讨Java虚拟机(JVM)中的类加载子系统,包括其基本结构、类加载器的工作原理、类的加载过程以及双亲委派机制。通过对这些关键点的详细分析,帮助读者更好地理解和掌握JVM的核心机制。 ... [详细]
  • 一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • 深入解析进程、线程与协程的关系及差异
    本文详细探讨了进程、线程和协程这三个概念的基本定义、功能特点以及它们之间的相互关系。通过对比分析,帮助读者更好地理解这三种并行计算模型在实际应用中的选择与运用。 ... [详细]
  • 本文探讨了在PBS集群环境中管理大量依赖任务的有效方法。虽然Ruffus是一个成熟的选择,但作者对探索其他如WaterCan等工具产生了兴趣,以更好地适应不同资源需求的任务。 ... [详细]
  • 精选Unity开源项目:UniRx实现响应式编程
    本文介绍了Unity中的响应式编程框架——UniRx,探讨了其在解决异步编程难题中的应用及优势。 ... [详细]
  • 本文介绍了如何设计并实现一个基于Java的聊天室系统,旨在检验个人Java技能掌握程度及满足实验室任务需求。该系统不仅支持基本的文字交流,还涵盖了多媒体文件传输、表情发送等功能。 ... [详细]
  • 本文通过生动的例子讲解了Python中多线程的阻塞操作(join)和守护线程(setDaemon)的使用方法。通过模拟一个聚会场景,详细解析了不同线程控制方式下的程序行为。 ... [详细]
  • 本文探讨了Java中实现定时任务的几种常见方式,包括java.util.Timer、ScheduledExecutorService以及Spring Task,并对每种方法进行了详细的代码示例和优缺点分析。 ... [详细]
author-avatar
mobiledu2502889793
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有