默认是四个cpu轮流执行的,你写个while(true);运行下,然后看CPU图表就知道了。
当然你可以设置它只在哪个CPU上运行,在任务管理器-进程里选中你的进程,右键-设置相关性,让它只在CPU1上运行,然后再看CPU图表,就发现只有一个CPU在高负荷占用了

解决方案 »

  1.   

    应该轮流执行了,因为图表上每个CPU的运行占用率都是一样的
      

  2.   

    如果是死循环,应该是在一个CPU上。CPU占用率只会有25%。不会100%
      

  3.   

    真的么?现在的多核cpu每个核心都有自己的独立12级缓存,如果轮流运行的话难道还要在运行时在多个核心中切换交换缓存内容么,怎么想代价都太大了吧?cpu图表会不会是windows故意整成这样的呢?
      

  4.   

    真的么?现在的多核cpu每个核心都有自己的独立12级缓存,如果轮流运行的话难道还要在运行时在多个核心中切换交换缓存内容么,怎么想代价都太大了吧?cpu图表会不会是windows故意整成这样的呢?
    ls说的有道理啊
      

  5.   

    你可以通过代码设置一下线程的亲缘性,函数好像是SetThreadAffinityMask,这样就把某个线程绑定在一个固定的CPU上运行。同时个人认为一个线程系统没有必要交给多个CPU去执行,你认为有这个必要嘛??
      

  6.   

    Windows是占先式线程调度。如果线程执行中移交了控制, 如WaitForSingleObject,WaitMessage之类,线程就进入线程队列,然后轮到时被空闲CPU执行。通过SetThreadAffinityMask可以指定某个CPU
    如果没有移交控制,就一直在一个CPU上跑。