扫码关注官方订阅号
比如说,我cpu有四个线程,那么运行一个只能利用单线程的软件为什么不是这个进程把第一个核心的所有资源占用,而是每个线程占用百分之25?
走同样的路,发现不同的人生
你想要的是可以实现的,这个在不同的操作系统上有不同的API可以调用,在linux是调用sched_setaffinity ,在windows上可以用SetProcessAffinityMask ,这就是把特定的线程绑定运行在特定的cpu核上运行。当然,你说的,一个线程完全占用一个CPU的所有运行,这个在用户态不能实现的,现在的操作系统是调度会把程序调度出去;内核态可以运行,这个要你自己来主动调度,否则,整个机器会出现假死的现象,机器没有反应,但实际是无限循环。
现代的操作系统对cpu的操作是抢占式多线程机制,在获取cpu控制时获得时间片,时间片结束后就控制权交付给别的线程。
家用PC是分时系统, 采用时间片轮转的方式平均分配资源。 如果单线程独占整个CPU核心的话该线程死循环怎么办
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
你想要的是可以实现的,这个在不同的操作系统上有不同的API可以调用,在linux是调用sched_setaffinity ,在windows上可以用SetProcessAffinityMask ,这就是把特定的线程绑定运行在特定的cpu核上运行。当然,你说的,一个线程完全占用一个CPU的所有运行,这个在用户态不能实现的,现在的操作系统是调度会把程序调度出去;内核态可以运行,这个要你自己来主动调度,否则,整个机器会出现假死的现象,机器没有反应,但实际是无限循环。
现代的操作系统对cpu的操作是抢占式多线程机制,在获取cpu控制时获得时间片,时间片结束后就控制权交付给别的线程。
家用PC是分时系统, 采用时间片轮转的方式平均分配资源。 如果单线程独占整个CPU核心的话该线程死循环怎么办