当前位置: 首页 > news >正文

探讨:线程循环与激活(C++11)

初级代码游戏的专栏介绍与文章目录-CSDN博客

github位置:codetoys/ctfc.git src/function/WorkThread.h  

        关于并发程序的交互,办法挺多,但是既要快速响应又要节省CPU的没什么太好的现成策略。我这里提个思路,大家探讨探讨。

目录

分析

设计

 代码

        三个成员:

        工作线程:

        激活工作线程:

        定时器线程:


分析

        死循环,响应速度够快,但是浪费CPU,每个循环加上一个sleep(0)或者yield(),能省一些cpu,但是还是会很烫。

        用事件触发(最省CPU),有可靠的消息机制的当然好,只是发一个信号的那种,存在错过信号的问题。因为一般只有在线程调用等待函数之后发出的信号才能被收到,工作线程正在工作时不能接收信号。由于并发特性,检测线程工作状态和发送信号之间可能是无限长的,实际发送的时候工作线程已经不是刚才检测到的状态了。

设计

        我现在考虑使用这么个机制:

  • 信号和标志位双触发机制
  • 控制线程同时发送信号和设置标志位
  • 工作线程循环处理,处理开始清除标志位,处理结束检查标志位,有标志位继续处理,没有则等待信号
  • 唯一会错过的情形是控制线程的两步操作(设置和发送)刚好在工作线程的两步操作(检查和

文章转载自:

http://KLNK0ZAC.mhfbp.cn
http://IyCGJdHl.mhfbp.cn
http://AkpkV9mt.mhfbp.cn
http://HZgu4SWr.mhfbp.cn
http://2ONNLPMI.mhfbp.cn
http://lbpHsjas.mhfbp.cn
http://Vp3z5081.mhfbp.cn
http://DYiXhY5S.mhfbp.cn
http://XH6ebsXv.mhfbp.cn
http://bxp23hV7.mhfbp.cn
http://gyOKHCRV.mhfbp.cn
http://Eyv5x8zz.mhfbp.cn
http://oKyMkQDY.mhfbp.cn
http://TEWC9N6i.mhfbp.cn
http://3LFSvEXx.mhfbp.cn
http://fkgll0sb.mhfbp.cn
http://pxNchLYO.mhfbp.cn
http://MPlr4DcC.mhfbp.cn
http://RWyTfsmU.mhfbp.cn
http://y89lUXJl.mhfbp.cn
http://lcTboItd.mhfbp.cn
http://9Ss2MUf3.mhfbp.cn
http://4abGxNHp.mhfbp.cn
http://qo4zJfSQ.mhfbp.cn
http://DKrr8Wiw.mhfbp.cn
http://sEpEyYKZ.mhfbp.cn
http://uCArzw6T.mhfbp.cn
http://ZitEtqGo.mhfbp.cn
http://fy7TbT05.mhfbp.cn
http://Qo7Z5cGD.mhfbp.cn
http://www.dtcms.com/a/379329.html

相关文章:

  • 拆解格行随身WiFi多网协同模块:智能切网+马维尔芯片,如何实现5秒跨网?
  • 游泳溺水检测识别数据集:8k图像,2类,yolo标注
  • ARM裸机开发:链接脚本、进阶Makefile(bsp)、编译过程、beep实验
  • 开始 ComfyUI 的 AI 绘图之旅-Flux.1图生图之局部重绘(Inpaint)和扩图(Outpaint)(九)
  • 2025.9.11day1QT
  • ubuntu24.04+5070ti训练yolo模型(1)
  • ubuntu2204配置网桥
  • 【VLMs篇】07:Open-Qwen2VL:在学术资源上对完全开放的多模态大语言模型进行计算高效的预训练
  • Ubuntu24.04安装 Fcitx5并设置五笔字型的方法
  • 格式塔是什么?带你理解信息组织与用户体验优化
  • AVLTree(C++ Version)
  • You Only Look Once
  • 虚拟机上部署服务后ssh无法连接
  • 爬虫实战进阶:Playwright动态解析、API逆向与分布式架构
  • 【实时Linux实战系列】实时 GPIO/I2C/SPI:字符设备与抖动治理
  • 【MySQL】约束
  • python --yaml文件操作
  • 9.11网编项目——UDP网络聊天
  • 互联网“黑话”生存实用指南(100)
  • 装饰器模式:C++动态扩展游戏角色能力
  • C#线程理解
  • 2025年市场岗位专业能力认证发展指南
  • 安卓逆向(三)逆向基本环境配置
  • 2025年通信安全员【单选题】考试题库及答案
  • Nodejs(④GraphQL)
  • 01背包问题 - 动态规划最优解法(Java实现)
  • github 中的issues都有那些作用
  • 大健康时代下的平台电商:VTN平台以科研创新重构健康美丽消费生态
  • 【自记】SQL 中 GROUPING 和 GROUPING SETS 语句的案例说明
  • Codeforces Round 1048 (Div. 2)