为什么只能用单核cpu的软件并不是将一个cpu线程独占,而是每个线程平均占用?

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

阅读 6.1k
3 个回答

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

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

新手上路,请多包涵

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题