本帖最后由 VisualEleven 于 2013-07-11 11:57:48 编辑

解决方案 »

  1.   

    谁告诉你一个程序都是由一个cpu处理的?
      

  2.   

    我没在项目属性里面设置开启OPENMP好不好
      

  3.   

    不知道从哪看到个OPENMP就在这里装  OPENMP是干嘛的 明白? 自己好好百度百科去
      

  4.   

    真懂就给大家讲出来,让版友都长长见识;不懂就别装逼。最烦这种解决不了任何问题还乱汪汪叫的东西!
    不知道是谁装逼  毛都不懂  VC这么屌,多线程程序自动双核并行处理了?? 不知道的还以为又是什么高深的玩意   一看帖  什么jb OPENMP??  不好意思  我不懂 OPENMP  也从来没用过  貌似你很懂 不然也不会质疑   这时候CPU占用率竟然是100%!!俺没开启OPENMP啊,VC要并行处理也不给俺提示一声?结果百度一把OPENMP  好家伙 长知识了 不知道你懂OPENMP多少  不过我看5分钟的文档都比你懂的多...
      

  5.   

    引自百度百科(部分):OpenMp是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多线程程序设计的一套指导性的编译处理方案(Compiler Directive)。
      

  6.   

    http://www.cnblogs.com/yangyangcv/archive/2012/03/23/2413335.html
    我觉得这篇文章能说明这些问题.我读了之后的理解是.   在程序有多个线程的情况下, 系统会自动利用多核来执行不同的线程, 而跟openMp是没有什么关系的.  openMp是完全可以为单个线程使用多个核并行处理, 即同一个线程同时由多个核来并行处理. 当然, 这需要你的程序代码有可能进行并行处理.
      

  7.   


    不错。多线程的调度是操作系统自动管理的,还可以用WIN32 API SetProcessAffinityMask设置进程可以使用哪些CPU。
      

  8.   

    我没在项目属性里面设置开启OPENMP好不好
    OpenMP只是同构多核的一个规范(区别于异构多核OpenCL),OpenMP仅仅是为了不使用CreateThread这样麻烦的方法就可以使用多核技术 ---- 系统是不是使用多核和OpenMP没有关系,只取决于您的设置和程序;
      

  9.   

    VC编译器不负责这个吧,是系统进行调度的,LINUX和WINDOWS都早就这样了!
      

  10.   

    那你设置线程的亲缘性吧
    SetThreadAffinityMask()
      

  11.   

    我怕楼主看不懂,给你解释下:P
    将某个线程bind到某个CPU上,以后如果不再设置就一直在这里运行了。
      

  12.   

    我同情妹纸啊,人家是理解错了,那你也不能上来就说人家装【你的原话:不知道从哪看到个OPENMP就在这里装  OPENMP是干嘛的 明白?】,你这样说谁不生气啊,也许人家就是对这个概念理解错了,你就说人装干啥。谁还没有理解错的时候啊。