假如有:
AfxBeginThread(各种参数);//1
AfxBeginThread(各种参数);//2
那么这两个线程是同时开始运行的吗.
还是2要比1慢

解决方案 »

  1.   

    谁先谁后是由系统调度决定。 在单CPU 的机器上,肯定有先后顺序,不可能同时运行。
      

  2.   

    如果想要一个线程多占用cpu时间,可以提高它的优先级。相反,可以降低她的优先级。
    BOOL SetThreadPriority(
      HANDLE hThread, // handle to the thread
      int nPriority   // thread priority level
    );
    其中nPriority中指定的是相对于进程的优先级。
    有就是说,用在一个进程中用默认的优先级建立的线程,他们的优先级是一样的。如果想让进程或者其中的线程占用更多cpu时间,可以用:
    BOOL SetPriorityClass(
      HANDLE hProcess,        // handle to process
      DWORD dwPriorityClass   // priority class
    );
    他设置进程的优先级。他们都有get函数
    DWORD GetPriorityClass(
      HANDLE hProcess   // handle to process
    );
    int GetThreadPriority(
      HANDLE hThread   // handle to thread
    );
    用来获取进程,线程的优先级。更详细的情况可以参考msdn.
      

  3.   

    不一定!!!!!!!
    绝对不要赌哪个先开始。如果确实需要顺序,用线程同步的方法吧!比如mutex, event 或 临界区等。
      

  4.   

    说不准,哪个线程会先分配到CPU时间是个未知数~~~这由OS来决定
    Chice_wxg()说得有道理,使用内核对象来产生同步或异步信号使
    它们先后的执行,这需要你自己来规定.
      

  5.   

    线程不可能同时运行,除非你用到多CPU,在一个CPU上是不可能做到的。实现把握线程的先后问题必须自己写一些代码,最简单的方法就是设信号了。WaitForSingleObject(HANDLE,TIMEOUT)与SetEvent(HANDLE)至于设定线程优先级的方法我觉得不太好,就算设定了优先级也解决不了很多问题,比如同时读取改变一些值,这就必须用到零界区(这个也是多线程最关注的一个问题了)