• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 关于CPU利用率和多线程开发

关于CPU利用率和多线程开发

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了linux cpu线程命令,cpu线程是什么意思,32核64线程cpu,cpu核心数和线程数,6核12线程cpu等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于CPU利用率和多线程开发
描述:

cpu在类似于播放视频读取文件是否在一直计算(占用)?
 例如我在播放电影同时做别的操作,那么我在播放电影时CPU是否一致在占用,如果没有占用,那么播放电影的功能是播放器自己读取视频文件?如果cpu被播放程序占用,那么其他线程用CPU时(时间片?)是不是要抢占cpu的控制权,但是这样交替执行,实际CPU的执行总时间是一定的,怎么会提高性能?
多线程我知道可以使多次提交不堵塞,但是对于CPU的“空闲时间”“效率”以及“读取文件时不占用cpu”这些方面还不甚了解,
我觉得只有了解这些CPU的运行原理才能准确把握什么时候用多线程等以提高cpu的使用效率
请帮解答一下如果利用多线程充分利用CPU


解决方案1:

前面的回答已经说的比较详细了,我再补充一些,具体到这个场景:
“cpu在类似于播放视频读取文件是否在一直计算(占用)?”
答案是:不是。
在视频播放和音频播放这样的场景中,大量的时间其实是花在IO操作和DMA传输上了,所以CPU占用率并不是太高。
你可以简单验证下,PC机中,你播放一个视频,然后监视CPU占用率,你会发现其实没多少。基于ARM的构架也是类似的情况。
因为播放视频时,主要流程是 :从存储器中读取视频文件,通过DMA操作将文件数据传输到内存,解码,通过DMA将数据传输到显示控制器显示。大家知道DMA过程是不需要CPU参与的,而解码过程,如果是硬件解码的话,CPU也很少参与,(所以软件解码的话CPU占用率就会比较高),所以说整个过程其实IO占用的时间是比较多的(不管是读取文件IO,还是把数据送到显示控制器的IO),但由于IO过程是用DMA方式操作的,所以CPU不用管,所以CPU大部分时间空闲,可以去执行别的任务。这就是为什么播放视频音频时CPU占用率其实并不高。

解决方案2:

这个问题不能从软件入手,需要知道芯片里面干了什么,得从硬件入手。以手机举例:
放视频,视频控制器是从内存数据块链读取内容,解码,送到显示控制器。
图形界面,GPU是从内存数据块链读取内容,合成,送到显示控制器。
显示控制器把从GPU和视频控制器送来的数据混合,输出,或者继续送给GPU做旋转等操作,然后GPU重新送给显示控制器。所有的步骤都是从内存数据块链读取或者写入内容。内存是中介。
CPU上驱动的工作是把数据分块,组成链,把基地址告诉各个控制器,并让他们处理。GPU复杂些,CPU先要动态解释命令,然后送给GPU。整个过程内存也是中介。
如果数据的源头来自文件,进过CPU驱动层层解析,闪存控制器读取数据块,送到内存供视频控制器读取。
上面这些事,你可以写一个单线程做完,也可以多线程做,分布到不同的CPU。既可以中断触发也可以轮询,不过一般是中断。
手机上把握使用率,那不是手工干的,是有ITS/IPA/EAS或者调度软件根据大小核的热模型来推导出哪个核或者那几个核干最省电。
不知是否解释了你的疑惑。

解决方案3:

“cpu在类似于播放视频读取文件是否在一直计算(占用)?”
答案是:从宏观来说是的,但实际肯定不是一直占用。打开音频/视频文件就一直没有关,只是会读一部分到内存中做缓冲。
去测试 CPU 使用会发现,CPU 使用率会一直有,但不高(这是宏观的表现);但从源代码分析,肯定其中存在 CPU 轮转,如:Sleep、或者其它。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于CPU利用率和多线程开发

相关文章

  • 2017-06-05 perl与汇编?????
  • 2017-06-05 pthread_create创建多线程,报错问题,求教,急
  • 2017-06-05 問一個關於USB的INF文件的問題哦分不夠再加
  • 2017-06-05 STM32使用的FSMC功能如何配置为双向
  • 2017-06-05 ucguiListview控件显示问题
  • 2017-06-05 如何在Windows驱动里使用API函数
  • 2017-06-05 数据校验串口数据校验码问题
  • 2017-06-05 为什么系统调用比普通的函数调用更耗时?用户态和内核态切换的代价在哪?
  • 2017-06-05 lua.dlllua的字符串操作的问题
  • 2017-06-05 新手求教!在s5pc100中挂载文件系统失败!错误信息见内容!

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 如何对93c46芯片进行读写
    • ARM的中断
    • 关于更新网卡驱动程序中无法运行makeCPU=PENTIUMtool=gnuln97xendo
    • 寻找调试TCP/IP,UDP协议的软件,高分送。
    • 嵌入式系统设计方法
    • wince下edb和cedbapi使用的区别
    • 韦东山视频第三期之心得体会
    • 各位大侠,请问在QT中如何使lineedit中闪烁的光标水平显示,就像在dos下一样
    • wince网络问题
    • 启动软盘需要吗?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有