1. 单核和多核CPU上多线程执行效率的探讨

a1: 多线程实际上是在单个CPU中按顺序执行的,但是系统可以帮助您切换该执行,但是它不是很快的(相反,是缓慢的)

如果有多个cpus,则可以同时在两个cpus中执行.........

a2: 在单核CPU上运行的多线程程序. 只能同时运行一个线程. 该系统可帮助您切换线程. 系统将时间片分配给每个线程以执行. 每个时间片约为10毫秒. 它似乎同时运行,但实际上每个线程都会运行一点,然后切换到其他线程以继续运行

效率不会提高

切换线程会增加开销

a3: #3F说的是正确的. 因此,不建议不要使用多线程,尤其是在单核CPU上.

使用单核CPU时使用多线程. 通常,有线程在等待.

对于常见的进度条更新类型,可以简单地控制那些可以简单控制的类型(例如: 在循环中手动处理消息). 通常,不使用线程,这可以提高程序的性能. 并避免不必要的线程同步问题.

a4: 您可以尝试双核和三线程,但是准确性低于双线程!

对于相同的算法,CPU占用率为100%的最小线程数是最有效的. 如果CPU占用率很高,则最适合使用单核单线程,双核双线程,四核和四线程.

但是,为什么有时线程数超过CPU内核数会更快?原因是此类程序的单线程操作量不足以占用CPU的一个核心(例如,IO操作很多,IO相对较慢,这是程序的瓶颈)

a5: 使用多线程是在执行耗时的操作时,您需要等待返回结果. 这时,多线程可以提高程序的并发程度. 如果不需要等待并执行可以顺序完成的任务,那么使用多个线程就是一种浪费.

2. 谈论多核CPU,多线程和并行计算

a1: CPU发展趋势

核心数将继续增加. 根据摩尔定律,由于单核性能提高的严重瓶颈问题,到2017年底和2018年初,普通台式PC有望达到24核(或16核和32线程). 我们如何应对这种突然增长在核心数上?编程还必须与时俱进. 作者大胆地预测,CPU内核之间的片上总线将以4路组连接: ),因为完全连接太复杂,并且单条总线还不够. 而且它应该是一个不对称的多核处理器,可以与多个DSP处理器或流处理器混合使用.

a2: 线程越多越好?何时需要使用多线程?

线程不得尽可能多. 线程切换也很昂贵. 添加线程时,增加的开销少于线程可以消除的阻塞时间,这是值得的.

自2.6内核以来,Linux为不同的内核提供了不同的线程进行处理. 从NT.4.0开始,Windows也支持此功能.

何时应使用多线程?应该在四种情况下对此进行讨论:

a. 多核CPU密集型任务. 这时,请尝试使用多线程来提高任务执行效率,例如加密和解密,数据压缩和解压缩(视频,音频,普通数据),否则只能加载一个核心,而其他核心则处于空闲状态

b. 单核CPU密集型任务. 此时的任务已消耗了100%的CPU资源,并且没有必要也没有可能使用多线程来提高计算效率;相反,如果要进行人机交互,最好使用多线程,以防止用户无法与计算机交互. 继续.

c. 单核CPU-IO密集型任务,使用多线程是为了方便人机交互,

d. 更不用说多核CPU-IO密集型任务,原因与单核时相同.

4. 程序员需要掌握的技能/技术

(1)减少序列化代码以提高效率. 这是胡说八道.

(2)单个共享数据分发: 复制一个数据的多个副本,以便不同的线程可以同时访问它.

(3)负载平衡可以分为静态和动态. 有关详细信息,请参阅相关文献.

3. 请问: CPU多核与应用程序多线程之间是什么关系?

a1: 多核意味着系统可以同时运行多个线程. 例如,双核可以同时执行两个线程. 单个内核一次只能执行一个线程.

a2: 我尝试了从192.168.0.1到192.169.0.255的ping程序

它是通过多线程完成的,发现单核计算机和多核计算机之间的性能差异大约是两倍.

a3: 多核对用户是透明的. 应该说,它对程序员是透明的. 您完全不必担心. 当您使用单核编程时,就可以了. 除非使用OpenMP进行编程,否则将使用很多限制. 您的上述测试不准确. 网络(主要是远程主机)在不同时间将具有不同的响应速度. 您应该在干净的本地计算机和相同的环境中进行测试. 但是,对于多线程多核要优于单核这还是可以肯定的. 简而言之,我们不必担心该程序在单核或多核上的并发问题.

a4: 多核是指具有多个核的CPU,并且多线程意味着程序具有同时执行的多个线程.

多核还需要使用多线程来利用.

类似地,多线程只能在多核上具有真正的优势.

在这方面,它对程序员不是透明的. 程序员可以控制程序/线程在哪个CPU(内核)上运行. 用户还可以控制程序在哪个内核上运行. 因此,多核和多线程对用户和程序员而言并不透明. 程序员必须了解这一知识. 为了使程序最大化机器的性能.

原始链接

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/shoujiruanjian/article-299307-1.html

c语言如何多核运行程序,对于多线程程序,单核cpu和多核cpu如何工作?相关推荐

  1. c语言没错误运行出现烫,C程序运行出现烫烫烫,怎么办啊急死了,求高手改进...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 成绩处理系统 #include #include #include struct single { char course[10];//结构体数组,课程名 ...

  2. 多线程程序在多核和单核上运行的不同

    1.锁 在单核上,多个线程执行锁或者临界区时,实际上只有一个线程在执行临界区代码,而核心也只支持一个线程执行,因此不存在冲突.如果某个线程持有锁,那只有其他线程不会被调度到CPU上执行,影响的只是持有 ...

  3. python语言程序的特点_Python语言概述及其运行机制详解

    即日起,我们将打开一个新的编程世界的大门--Python语言.Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新 ...

  4. 对多线程程序,单核cpu与多核cpu如何工作相关的探讨

    对多线程程序,单核cpu与多核cpu如何工作相关的探讨 我们程序员在编码的时候,涉及到技术方案时,往往会忽略掉代码对性能方面的影响,或者没有足够的敏感度来帮助自己判断自己的技术方案对系统性能造成的影响 ...

  5. 多核CPU,单核CPU,超线程技术,与多线程程序深入浅出

    CPU核心单元组 他只是CPU的一部分,不能称为CPU,它负责逻辑运算,是最重要的一部分. CPU CPU是CPU核心单元组(逻辑处理单元),时钟电路,高速缓存器等等组合的一个整体,其中CPU核心单元 ...

  6. 对于多线程程序,单核cpu与多核cpu是怎么工作的

    此文中的大部分资料来自于网络上,我只是觉得把有道理的整理一下,方便以后查阅. 1.多线程在单核和多核CPU上的执行效率问题的讨论 a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个 ...

  7. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端

    文章目录 前言 介绍 内存 内存布局 栈与调用惯例 堆与内存管理 运行库 入口函数和程序初始化 C/C++运行库 运行库与多线程 C++全局构造与析构 fread 实现 系统调用与API 系统调用介绍 ...

  8. c语言程序窗口后台持续监测,用c语言实现后台运行的、每隔30s检查一次的、带有日志功能的断网重新连接程序...

    /*这是一个后台运行的.每隔30s检查一次的.带有日志功能的断网重新连接程序. 要想使用它必须要配置好c语言环境,比如安装有mingw的codeblocks 实现的方式就是每隔一段时间就去ping一下 ...

  9. python是脚本语言、需要编译器编译执行_使用Notepad++编译运行C/C++/Python程序

    对我来说,比较常用的是C/C++/Python. 使用Notepad++编译运行单个源文件的C/C++/Python,比使用复杂的IDE更加快捷. 想要让Notepad++能够做到编译运行C/C++/ ...

最新文章

  1. Revisiting Salient Object Detection: Simultaneous Detection, Ranking, and Subitizing of Multiple Sal
  2. C 家族程序设计语言发展史
  3. 使用CEfSharp之旅(1) 加载网络页面
  4. Android_Fragment_Fragment详解
  5. 基于Java线程池读取数据库中数据(学习+运用)
  6. [CQOI2011]放棋子
  7. latex 错误: BibTeX: empty journal in Lv2021
  8. 测试攻城师的一点小开心
  9. ruby和python比较_ruby和python哪个强大
  10. redhat7 防火墙设置
  11. 含本土测量软件的Q-Vision+Kvaser CAN/CAN FD/LIN总线解决方案
  12. OA 系统中的流程管理
  13. 软件工程--软件详细设计说明书(免费小说网站)
  14. 传统数据与大数据对比
  15. 个人码支付申请官网(教程)
  16. win python 判断 所有 子进程 结束_python 多进程如何终止或重启子进程?
  17. WMA.3GP,MP4.AVi,格式有什么区别(科普扫盲)
  18. 服装购销管理软件哪个好,有推荐的吗?
  19. 免费、付费换IP大集合,你要的这都有【芝麻http】
  20. 一键获取速卖通商品详情

热门文章

  1. Visual Studio中的rc是什么文件
  2. (Tekla Structures二次开发)创建多边形板
  3. mysql出现2058,连接MySQL报“Error No.2058 Plugin caching_sha2_password could not be loaded”错误的解决办法...
  4. LiteFlowNet3:解决对应歧义以获得更准确的光流估计
  5. 微信公众号的Api 一些说明 关于 WeixinJSBridge API
  6. 大病众筹平台会成为下一个“网络诈骗”工具吗?
  7. 元宇宙的未来:以上帝视角掌控一切,你准备好了吗?
  8. 无法打开虚拟磁盘服务器,win2008R2 修改了带有快照的父虚拟磁盘;导致启动不了...
  9. 中鑫吉鼎|大学生的理财攻略有哪些
  10. 神级:程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结