多线程 – 如果有更多线程,我的程序会获得更多的CPU时间吗?
如果当前内核正在调度60个线程,则它们属于3个进程:
他们都在做计算(没有磁盘IO) C会比B获得更多的东西吗?B比A做得更多吗? 这对我来说似乎不太公平.如果我是一个不负责任的程序员,我可以产生更多的线程来占用更多的CPU资源. 这与golang有什么关系: 解决方法
您还可以分配整个可用内存,导致操作系统故障并劫持网卡.你可以做各种各样的事情但是谁会想要使用你的软件?
Golang goroutines基本上是一个线程池.每个goroutine都是一个线程池工作项.许多事情可以使你的线程池线程阻塞,比如使用同步IO,等待(非自旋锁)锁并手动睡眠或让步.在这些情况下,这是非常常见的,拥有比CPU更多的线程通常会提高应用程序的性能.请注意,并非所有IO都是磁盘IO.写入控制台是一个IO操作,但它实际上不是“磁盘IO”.另一件事是上下文切换可能不占用你的大部分CPU,并且拥有更多线程可能不会使你的任务 – 吞吐量降低.因此,在这种情况下,拥有更多线程意味着您的并行性更高,但您不会失去性能.这是一种常见的情况.这些天线程之间的上下文切换非常便宜.拥有比核心更多的线程可能没有必要杀死你的性能或以某种方式降低它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 第一次实验报告总结
- java – IntelliJ:搜索Checked异常,在方法签名中声明,但从
- java.util.ConcurrentModificationException异常;java.util
- Java中的Lucene,C#.Net和C.哪个是Windows服务器上长期使用的
- Java图像之自定义角度旋转(实例)
- struts2框架的登录制作图文教程
- MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘
- java – 如何在hibernate实体中通过几列定义索引?
- 用于将数字表示为String,Integer.java的所有可能的字符
- java – 与外部同步在同一对象上的内部同步