- 一 引言与技术背景游戏主循环是单线程的,任何耗时操作(如大纹理解码、大量文件 I/O、复杂计算)都会阻塞主线程,造成卡顿、掉帧、交互无响应。将耗时任务放到工作线程执行,主线程只负责渲染与少量调度,是提升流畅度的关键。Cocos2d-x 提供了异步纹理加载能力,底层通过工作线程解码图片,再在主线程回调生成 OpenGL 纹理,避免主线程阻塞。同时,引擎对象的内存管理与 OpenGL 上下文都不... 一 引言与技术背景游戏主循环是单线程的,任何耗时操作(如大纹理解码、大量文件 I/O、复杂计算)都会阻塞主线程,造成卡顿、掉帧、交互无响应。将耗时任务放到工作线程执行,主线程只负责渲染与少量调度,是提升流畅度的关键。Cocos2d-x 提供了异步纹理加载能力,底层通过工作线程解码图片,再在主线程回调生成 OpenGL 纹理,避免主线程阻塞。同时,引擎对象的内存管理与 OpenGL 上下文都不...
- 在多线程编程领域,C++11标准引入的std::thread库为开发者提供了跨平台的线程管理能力。其中,join()和detach()作为线程对象的两个核心成员函数,决定了线程生命周期的管理策略。本文将从基础概念出发,深入探讨两者的区别、应用场景以及底层实现机制,为读者提供全面的理解框架。 线程生命周期管理的基本概念 线程状态模型在C++多线程模型中,每个std::thread对象都关联着一... 在多线程编程领域,C++11标准引入的std::thread库为开发者提供了跨平台的线程管理能力。其中,join()和detach()作为线程对象的两个核心成员函数,决定了线程生命周期的管理策略。本文将从基础概念出发,深入探讨两者的区别、应用场景以及底层实现机制,为读者提供全面的理解框架。 线程生命周期管理的基本概念 线程状态模型在C++多线程模型中,每个std::thread对象都关联着一...
- 本实验深入探究了openEuler系统的进程管理与调度机制。通过编程实践了进程创建、阻塞与唤醒等基础操作,并对比实现了FCFS、SJF和RR等经典调度算法。重点通过内核模块模拟了CFS及其openEuler特有的QoS优化策略,验证了在线任务对离线任务的“绝对压制”特性,确保了关键业务的低时延响应,并加深了对Linux内核调度逻辑、红黑树应用及国产系统高性能优化特性的理解。 本实验深入探究了openEuler系统的进程管理与调度机制。通过编程实践了进程创建、阻塞与唤醒等基础操作,并对比实现了FCFS、SJF和RR等经典调度算法。重点通过内核模块模拟了CFS及其openEuler特有的QoS优化策略,验证了在线任务对离线任务的“绝对压制”特性,确保了关键业务的低时延响应,并加深了对Linux内核调度逻辑、红黑树应用及国产系统高性能优化特性的理解。
- 别让线程把 CPU 打成“电风扇”——鸿蒙多线程调度与线程池策略的冷思考 别让线程把 CPU 打成“电风扇”——鸿蒙多线程调度与线程池策略的冷思考
- 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,... 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,...
- 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,... 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,...
- 在多线程编程中,数据竞争(Data Race)是最常见且最难调试的问题之一。当多个线程并发访问同一内存位置,且至少有一个是写操作时,如果没有正确的同步,就会导致未定义行为。这种bug往往难以复现,却在生产环境中造成灾难性后果。 什么是数据竞争? 正式定义数据竞争发生在以下条件同时满足时:两个或更多线程并发访问同一内存位置至少有一个访问是写操作没有使用同步机制来排序这些访问 一个简单的数据竞争... 在多线程编程中,数据竞争(Data Race)是最常见且最难调试的问题之一。当多个线程并发访问同一内存位置,且至少有一个是写操作时,如果没有正确的同步,就会导致未定义行为。这种bug往往难以复现,却在生产环境中造成灾难性后果。 什么是数据竞争? 正式定义数据竞争发生在以下条件同时满足时:两个或更多线程并发访问同一内存位置至少有一个访问是写操作没有使用同步机制来排序这些访问 一个简单的数据竞争...
- Python 多线程日志错乱:logging.Handler 的并发问题🌟 Hello,我是摘星!🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。🦋 每一个优化都是我培育的花朵,每一个特性都是我放飞的蝴蝶。🔬 每一次代码审查都是我的显微镜观察,每一次重构都是我的化学实验。🎵 在编程的交响乐中,我既是指挥家也是演奏者。让我们一起,在技术的音乐厅里,奏响属于程序员的华美乐章。... Python 多线程日志错乱:logging.Handler 的并发问题🌟 Hello,我是摘星!🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。🦋 每一个优化都是我培育的花朵,每一个特性都是我放飞的蝴蝶。🔬 每一次代码审查都是我的显微镜观察,每一次重构都是我的化学实验。🎵 在编程的交响乐中,我既是指挥家也是演奏者。让我们一起,在技术的音乐厅里,奏响属于程序员的华美乐章。...
- 多线程编程已成为提高应用性能和响应速度的关键技术之一。然而,多线程环境也带来了一系列挑战,其中最突出的问题之一就是竞争条件(Race Condition)。本文将深入探讨如何通过使用互斥锁(Mutex)来实现线程安全(Thread Safety),并简要介绍协程(Coroutine)作为另一种解决方案。 1. 竞争条件简介竞争条件发生在多个线程尝试同时访问和修改同一资源时。如果这些操作没有正... 多线程编程已成为提高应用性能和响应速度的关键技术之一。然而,多线程环境也带来了一系列挑战,其中最突出的问题之一就是竞争条件(Race Condition)。本文将深入探讨如何通过使用互斥锁(Mutex)来实现线程安全(Thread Safety),并简要介绍协程(Coroutine)作为另一种解决方案。 1. 竞争条件简介竞争条件发生在多个线程尝试同时访问和修改同一资源时。如果这些操作没有正...
- 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,... 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,...
- 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,... 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,...
- 现代编程语言通过内存模型(如Java的JMM)抽象底层硬件细节,简化并发编程。核心概念happens-before定义了多线程操作的偏序关系,确保原子性、可见性和有序性。JMM通过6种规则(如程序顺序、锁同步、volatile变量、传递性等)规范线程间数据同步 现代编程语言通过内存模型(如Java的JMM)抽象底层硬件细节,简化并发编程。核心概念happens-before定义了多线程操作的偏序关系,确保原子性、可见性和有序性。JMM通过6种规则(如程序顺序、锁同步、volatile变量、传递性等)规范线程间数据同步
- 本文介绍了原子操作的概念及其实现机制。原子操作指不可中断的一个或一系列操作,通过处理器总线锁定、缓存锁定和原子指令(如CMPXCHG)保证操作的原子性。文章通过Java多线程示例说明非原子操作导致的数据不一致问题,并详细解析了三种实现方案:总线锁定(效率低)、缓存锁定(基于MESI协议)和原子指令(如CAS)。同时指出CAS存在的ABA问题、自旋开销和单变量限制等缺陷,最后展示Java如何使用At 本文介绍了原子操作的概念及其实现机制。原子操作指不可中断的一个或一系列操作,通过处理器总线锁定、缓存锁定和原子指令(如CMPXCHG)保证操作的原子性。文章通过Java多线程示例说明非原子操作导致的数据不一致问题,并详细解析了三种实现方案:总线锁定(效率低)、缓存锁定(基于MESI协议)和原子指令(如CAS)。同时指出CAS存在的ABA问题、自旋开销和单变量限制等缺陷,最后展示Java如何使用At
- 本文探讨了多线程环境下指令重排序对程序执行结果的影响。示例代码展示了代码重排序可能导致x=0、y=0的意外结果。文章分析了重排序的优化原理,包括编译阶段静态重排序和运行阶段动态重排序,指出其必须遵守数据依赖性和as-if-serial语义两个原则。为解决多线程重排序问题,介绍了内存屏障机制,并说明Java通过volatile关键字实现内存屏障,禁止被修饰变量发生指令重排序,从而保证共享变量的可见性 本文探讨了多线程环境下指令重排序对程序执行结果的影响。示例代码展示了代码重排序可能导致x=0、y=0的意外结果。文章分析了重排序的优化原理,包括编译阶段静态重排序和运行阶段动态重排序,指出其必须遵守数据依赖性和as-if-serial语义两个原则。为解决多线程重排序问题,介绍了内存屏障机制,并说明Java通过volatile关键字实现内存屏障,禁止被修饰变量发生指令重排序,从而保证共享变量的可见性
- 本文探讨了并发编程中的核心挑战——内存模型问题。通过Java示例分析了共享变量在多线程环境下的传播机制、可见性和有序性问题。文章指出,处理器缓存与内存速度差异导致的写延迟,以及指令重排序优化是并发异常的根源。重点解析了volatile关键字通过汇编LOCK指令强制缓存一致性,以及synchronized通过锁机制保证内存可见性的原理。本文为理解并发编程底层逻辑提供了系统视角,后续将继续深入相关主题 本文探讨了并发编程中的核心挑战——内存模型问题。通过Java示例分析了共享变量在多线程环境下的传播机制、可见性和有序性问题。文章指出,处理器缓存与内存速度差异导致的写延迟,以及指令重排序优化是并发异常的根源。重点解析了volatile关键字通过汇编LOCK指令强制缓存一致性,以及synchronized通过锁机制保证内存可见性的原理。本文为理解并发编程底层逻辑提供了系统视角,后续将继续深入相关主题
上滑加载中
推荐直播
-
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步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签