- 一个线程的一生:从“出生”到“退场”,看鸿蒙任务调度的灵魂设计 一个线程的一生:从“出生”到“退场”,看鸿蒙任务调度的灵魂设计
- 本文探讨并发编程的两种范式:显式同步约束(如Java共享内存模型)和隐式因果传递(如Golang消息传递模型)。Java通过synchronized、volatile等机制实现线程同步,要求开发者显式控制共享资源访问,但带来较大心智负担;Golang则通过Channel实现隐式编排,以通信代替共享。文章将分析两者如何确保内存可见性和数据因果序,展现并发编程哲学的差异。 本文探讨并发编程的两种范式:显式同步约束(如Java共享内存模型)和隐式因果传递(如Golang消息传递模型)。Java通过synchronized、volatile等机制实现线程同步,要求开发者显式控制共享资源访问,但带来较大心智负担;Golang则通过Channel实现隐式编排,以通信代替共享。文章将分析两者如何确保内存可见性和数据因果序,展现并发编程哲学的差异。
- 不是华而不实的选择:鸿蒙为什么执着于“微内核”?作者:Echo_Wish 一、引子:微内核 vs 宏内核,到底谁更香?你有没有发现一个有趣的现象:同样是操作系统,Linux、Windows这些主流系统都用的是宏内核(Monolithic Kernel);而鸿蒙(HarmonyOS),却偏偏反其道而行,选择了**微内核(Microkernel)**路线。不少人吐槽说:“微内核太理想化了吧,性... 不是华而不实的选择:鸿蒙为什么执着于“微内核”?作者:Echo_Wish 一、引子:微内核 vs 宏内核,到底谁更香?你有没有发现一个有趣的现象:同样是操作系统,Linux、Windows这些主流系统都用的是宏内核(Monolithic Kernel);而鸿蒙(HarmonyOS),却偏偏反其道而行,选择了**微内核(Microkernel)**路线。不少人吐槽说:“微内核太理想化了吧,性...
- 一、什么是线程池?核心思想: 线程池是一种基于“池化”思想来管理线程的工具。它预先创建好一定数量的线程,放入一个“池子”中,当有任务需要执行时,就从池子中取出一个空闲线程来执行任务,任务执行完毕后,线程并不被销毁,而是返回池中等待执行下一个任务。为什么需要线程池?在深入原理之前,我们先想想如果不使用线程池,我们如何处理多任务:// 原始方式:为每个任务创建一个新线程for (int i = ... 一、什么是线程池?核心思想: 线程池是一种基于“池化”思想来管理线程的工具。它预先创建好一定数量的线程,放入一个“池子”中,当有任务需要执行时,就从池子中取出一个空闲线程来执行任务,任务执行完毕后,线程并不被销毁,而是返回池中等待执行下一个任务。为什么需要线程池?在深入原理之前,我们先想想如果不使用线程池,我们如何处理多任务:// 原始方式:为每个任务创建一个新线程for (int i = ...
- Quorum机制是分布式系统中实现数据一致性的核心方法,基于鸽巢原理确保读写操作在副本间相遇。通过设定副本数N、写一致性级别W和读一致性级别R三要素,当W+R>N时可保证强一致性。不同NWR组合能优化读写性能或容错性。该机制还可用于Leader选举,通过版本号比较和副本同步确保数据一致性。Quorum机制在分布式系统中平衡了一致性、可用性和容错性需求。 Quorum机制是分布式系统中实现数据一致性的核心方法,基于鸽巢原理确保读写操作在副本间相遇。通过设定副本数N、写一致性级别W和读一致性级别R三要素,当W+R>N时可保证强一致性。不同NWR组合能优化读写性能或容错性。该机制还可用于Leader选举,通过版本号比较和副本同步确保数据一致性。Quorum机制在分布式系统中平衡了一致性、可用性和容错性需求。
- InputDispatcherInputDispatcher 是 Android 输入系统(InputFlinger)的核心组件,负责将输入事件(如触摸、按键)从系统层分发给目标应用窗口。它在 Input ANR(Application Not Responding) 的检测和触发过程中扮演关键角色,主要涉及 事件分发、超时监控、ANR 触发 三个核心机制。 事件分发InputManage... InputDispatcherInputDispatcher 是 Android 输入系统(InputFlinger)的核心组件,负责将输入事件(如触摸、按键)从系统层分发给目标应用窗口。它在 Input ANR(Application Not Responding) 的检测和触发过程中扮演关键角色,主要涉及 事件分发、超时监控、ANR 触发 三个核心机制。 事件分发InputManage...
- 管理Linux服务器就像身兼两职:既是“医生”,又是“城市规划师”。作为“医生”,你得用ps和top给系统“体检”,看看哪些进程在运行;必要时用kill命令做“外科手术”,终止掉问题进程。作为“规划师”,你得先用fdisk把“土地”(磁盘)划分成“地块”(分区),再用mkfs铺上“地基”(文件系统),最后用mount把地块“挂牌”使用。而df和du就是你随时查看“土地”使用情况的测量工具。 管理Linux服务器就像身兼两职:既是“医生”,又是“城市规划师”。作为“医生”,你得用ps和top给系统“体检”,看看哪些进程在运行;必要时用kill命令做“外科手术”,终止掉问题进程。作为“规划师”,你得先用fdisk把“土地”(磁盘)划分成“地块”(分区),再用mkfs铺上“地基”(文件系统),最后用mount把地块“挂牌”使用。而df和du就是你随时查看“土地”使用情况的测量工具。
- 1 简介使用多个返回值的错误处理,本文从设计哲学、语言特性 和 工程实践 三个层面来分析 Golang 的多返回值错误处理机制与 Python3 的异常机制的区别与优势。Golang 的多返回值错误处理机制概述在 Go 中,一个函数常常写成如下形式: func ReadConfig(path string) (Config, error) { // ... if er... 1 简介使用多个返回值的错误处理,本文从设计哲学、语言特性 和 工程实践 三个层面来分析 Golang 的多返回值错误处理机制与 Python3 的异常机制的区别与优势。Golang 的多返回值错误处理机制概述在 Go 中,一个函数常常写成如下形式: func ReadConfig(path string) (Config, error) { // ... if er...
- 人工智能(AI)正以惊人的速度推动着科技的进步,其中,AI操作系统作为支撑AI应用的核心平台,正逐渐成为未来发展的重要方向。本文将介绍“Agent OS”的概念,它是为AI智能体(Agent)量身定制的一种操作系统架构,旨在为多智能体系统提供高效、灵活且智能化的操作环境。 人工智能(AI)正以惊人的速度推动着科技的进步,其中,AI操作系统作为支撑AI应用的核心平台,正逐渐成为未来发展的重要方向。本文将介绍“Agent OS”的概念,它是为AI智能体(Agent)量身定制的一种操作系统架构,旨在为多智能体系统提供高效、灵活且智能化的操作环境。
- 一、AQS 是什么?AQS,全称 AbstractQueuedSynchronizer,即抽象队列同步器。抽象:它是一个抽象类,本身不能直接实例化,需要子类去继承它,并实现其保护方法来管理同步状态。队列:它内部维护了一个先进先出(FIFO)的等待队列,用于存放那些没有抢到锁的线程。同步器:它是构建锁和其他同步组件(如 Semaphore、CountDownLatch 等)的基础框架。核心思想... 一、AQS 是什么?AQS,全称 AbstractQueuedSynchronizer,即抽象队列同步器。抽象:它是一个抽象类,本身不能直接实例化,需要子类去继承它,并实现其保护方法来管理同步状态。队列:它内部维护了一个先进先出(FIFO)的等待队列,用于存放那些没有抢到锁的线程。同步器:它是构建锁和其他同步组件(如 Semaphore、CountDownLatch 等)的基础框架。核心思想...
- 1 简介本文举例说明同步与超时控制多个任务的典型方法Golang 的并发核心是 goroutine + channel,再辅以 sync 和 context 包。Go 的通道 + select 模型让超时机制天然优雅。若你关注 性能、资源利用率、高并发 → ✅ Golang 更优推荐:errgroup.WithContext(现代 Go 的标准方案)若你关注 异步 I/O + 简洁开发 →... 1 简介本文举例说明同步与超时控制多个任务的典型方法Golang 的并发核心是 goroutine + channel,再辅以 sync 和 context 包。Go 的通道 + select 模型让超时机制天然优雅。若你关注 性能、资源利用率、高并发 → ✅ Golang 更优推荐:errgroup.WithContext(现代 Go 的标准方案)若你关注 异步 I/O + 简洁开发 →...
- Android杀死选中的进程释放进程占用的空间在Android开发中,管理和优化应用的性能是一个重要的课题。特别是在资源管理方面,如何有效地管理进程,确保应用在运行时能够合理利用系统资源,是开发者需要关注的问题之一。本文将介绍如何在Android中杀死选中的进程,从而释放进程占用的空间,提高应用的运行效率。1. 进程管理的重要性Android系统为了保证用户体验,会根据当前系统的资源情况自动... Android杀死选中的进程释放进程占用的空间在Android开发中,管理和优化应用的性能是一个重要的课题。特别是在资源管理方面,如何有效地管理进程,确保应用在运行时能够合理利用系统资源,是开发者需要关注的问题之一。本文将介绍如何在Android中杀死选中的进程,从而释放进程占用的空间,提高应用的运行效率。1. 进程管理的重要性Android系统为了保证用户体验,会根据当前系统的资源情况自动...
- 1 简介Go 调度器是一个在用户态实现的、基于 G-P-M 模型 的自适应抢占式并发调度系统,让开发者几乎不用关心线程、锁、信号量,而只需专注于任务逻辑。配合通道可以高效实现并发任务。 2 示例 演示抢占调度与主动让出 func cpuIntensive(id int) { for i := 0; i < 10; i++ { fmt.Printf(... 1 简介Go 调度器是一个在用户态实现的、基于 G-P-M 模型 的自适应抢占式并发调度系统,让开发者几乎不用关心线程、锁、信号量,而只需专注于任务逻辑。配合通道可以高效实现并发任务。 2 示例 演示抢占调度与主动让出 func cpuIntensive(id int) { for i := 0; i < 10; i++ { fmt.Printf(...
- 在医疗设备控制系统的开发过程中,我们面临一个经典的技术挑战:如何在保持用户界面流畅响应的同时,可靠地处理设备控制的长时间操作。本文将通过一个医疗床控制系统的实际案例,分享我们在同步与异步通信架构设计上的解决方案。 问题场景我们的医疗床控制系统采用主从架构:Host(主控端)与EPC(设备控制单元)通过双端口通信:Command端口:用于发送控制命令和接收立即响应Event端口:用于接收异步的... 在医疗设备控制系统的开发过程中,我们面临一个经典的技术挑战:如何在保持用户界面流畅响应的同时,可靠地处理设备控制的长时间操作。本文将通过一个医疗床控制系统的实际案例,分享我们在同步与异步通信架构设计上的解决方案。 问题场景我们的医疗床控制系统采用主从架构:Host(主控端)与EPC(设备控制单元)通过双端口通信:Command端口:用于发送控制命令和接收立即响应Event端口:用于接收异步的...
- 1 简介运行时有多种同步机制。它们在语义不同,特别是在它们是否与goroutine调度器或操作系统调度器进行交互。最简单的是 “mutex”,它是通过 "lock "和 "unlock "来操作的。unlock来操作。这应该被用来保护短期内的共享结构时间。在mutex上的阻塞直接阻塞M,而不与Go调度程序交互。调度器(Scheduler)是 Go 能在高并发、高性能、低复杂度下运行的核心原... 1 简介运行时有多种同步机制。它们在语义不同,特别是在它们是否与goroutine调度器或操作系统调度器进行交互。最简单的是 “mutex”,它是通过 "lock "和 "unlock "来操作的。unlock来操作。这应该被用来保护短期内的共享结构时间。在mutex上的阻塞直接阻塞M,而不与Go调度程序交互。调度器(Scheduler)是 Go 能在高并发、高性能、低复杂度下运行的核心原...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签