请教各位高人   我要创建3个线成 3个线成同时运行  这3个线成调用同一函数  但传进去的值不同  应该怎样编写

解决方案 »

  1.   

    CWinThread* AfxBeginThread(
       AFX_THREADPROC pfnThreadProc,
       LPVOID pParam,//This
       int nPriority = THREAD_PRIORITY_NORMAL,
       UINT nStackSize = 0,
       DWORD dwCreateFlags = 0,
       LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
    );HANDLE CreateThread(
      LPSECURITY_ATTRIBUTES lpThreadAttributes,
      SIZE_T dwStackSize,
      LPTHREAD_START_ROUTINE lpStartAddress,
      LPVOID lpParameter,//Set this
      DWORD dwCreationFlags,
      LPDWORD lpThreadId
    );
      

  2.   

    mfc下传参数:
    UINT MyThreadProc( LPVOID pParam )
    {
        CMyObject* pObject = (CMyObject*)pParam;    if (pObject == NULL ||
            !pObject->IsKindOf(RUNTIME_CLASS(CMyObject)))
        return 1;   // if pObject is not valid    // do something with 'pObject'    return 0;   // thread completed successfully
    }// inside a different function in the program
    .
    .
    .
    pNewObject = new CMyObject;
    AfxBeginThread(MyThreadProc, pNewObject);
    SDK下差不多,察看msdn
      

  3.   

    如果有共享的资源则可以用关键代码实现:
    CRITICLE_SECTION cs;
    InitializeCriticleSection(&cs);
    EnterCriticleSection(cs);
    //这里对你的共享资源进行访问
    LevelCriticleSection(cs);
    DestroyCirticleSection(&cs);
      

  4.   


    再问的具体些,希望各位高手指教我有一函数,用于操作数组的计算
    UINT Scale(LPVOID pParam)
    {
        //..............
    }现在想同时运行三个线程,分别传进不同的数组指针,同时计算,但我的程序要知道这三个线程都已结束才能继续执行,请教怎样用AfxBeginThread 和 WaitForMultipleObjects ,用这两个函数对吗
      

  5.   

    HANDLE h[3]
    h[0] = handle1;
    h[1] = handle2;
    h[3] = handle3;
    这三个句柄是你调用AfxBeginThread的返回值
    然后在主线程调用WaitForMultipleObjects(3,h,TRUE,INFINITE);等待三个线程的执行完毕