suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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

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

怪我咯怪我咯2769 Tage vor897

Antworte allen(3)Ich werde antworten

  • 黄舟

    黄舟2017-04-18 09:54:36

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

    Antwort
    0
  • 高洛峰

    高洛峰2017-04-18 09:54:36

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

    Antwort
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:54:36

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

    Antwort
    0
  • StornierenAntwort