【问题标题】:Is it irresponsible to use all the available cores and CPU's?使用所有可用的内核和 CPU 是否不负责任?
【发布时间】:2014-04-14 21:14:45
【问题描述】:

我正在设计一个 JPG 解码器。一种实现方式支持使用线程并通过扩展支持 CPU 的多个内核。如果底层系统支持 3 个内核,我的程序将使用所有这些内核。使用所有核心资源是不负责任的,还是旨在缓解贪婪程序的系统。

此外,线程实现还需要更多的内存资源(相当于 RGB BMP 大小的 3 倍)。什么时候内存使用过多?

【问题讨论】:

  • 用户选择他们想为特定任务分配多少核心。
  • 您认为启动线程等对每个文件解码通常的 JPG 文件是否有益?我不是。记忆:代码?
  • @CaptainObvlious 我认为这超出了用户的知识范围。
  • @CaptainObvlious 大多数用户对微调一无所知。大多数人会坚持使用默认值,如果你不使用所有内核,要么抱怨它太慢,要么抱怨它使用过多的 CPU :-)
  • 有人说设计就是做出选择......无论哪种方式,你都会被激怒。

标签: c++ resources policy


【解决方案1】:

使用所有核心资源是否不负责任

不,不是。考虑一个单核系统:如果以某种方式“不负责任”地使用所有核,那么什么都做不了。

或者是旨在缓解贪婪程序的系统

是的,操作系统是专门为此设计的。一般来说,两个同等优先级的程序各自想要使用所有 CPU 内核将共享 50%-50% 的内核(按时间,而不是按内核分配)。每个应用程序都会认为它正在使用所有内核,但某些内核的运行速度可能会比其他内核慢一些。应用程序不需要关注这种详细程度(尽管如果需要,操作系统通常会提供这样做的方法)。

【讨论】:

  • 好吧,谢谢.. 我立刻明白了。我想这可以解释为什么我的多线程实现偶尔会比单线程实现慢得多。
猜你喜欢
  • 2016-05-31
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多