java - 为什么只能用单核cpu的软件并不是将一个cpu线程独占,而是每个线程平均占用?
怪我咯
怪我咯 2017-04-18 09:52:36
[Java讨论组]

比如说,我cpu有四个线程,那么运行一个只能利用单线程的软件为什么不是这个进程把第一个核心的所有资源占用,而是每个线程占用百分之25?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
黄舟

你想要的是可以实现的,这个在不同的操作系统上有不同的API可以调用,在linux是调用sched_setaffinity ,在windows上可以用SetProcessAffinityMask ,这就是把特定的线程绑定运行在特定的cpu核上运行。当然,你说的,一个线程完全占用一个CPU的所有运行,这个在用户态不能实现的,现在的操作系统是调度会把程序调度出去;内核态可以运行,这个要你自己来主动调度,否则,整个机器会出现假死的现象,机器没有反应,但实际是无限循环。

高洛峰

现代的操作系统对cpu的操作是抢占式多线程机制,在获取cpu控制时获得时间片,时间片结束后就控制权交付给别的线程。

天蓬老师

家用PC是分时系统, 采用时间片轮转的方式平均分配资源。 如果单线程独占整个CPU核心的话该线程死循环怎么办

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号