创建一个工作线程我知道有两个步骤:
(1)实现线程函数(2)开始线程。
情况是这样:
我在一个类A里面要启动一个线程,我现在1、实现线程函数myfunc,这个线程函数定义在哪里。
2)开始线程,怎么开始。
着急啊。

解决方案 »

  1.   

    1、这个线程函数可以声明在你的类A中,例如:
       static DWORD WINAPI myfunc(LPVOID pv);
    实现:
     DWORD WINAPI A::myfunc(LPVOID pv)


    2、用如下函数开始
     DWORD threadid;
      m_hThread = CreateThread(  //HANDLE m_hThread;
        NULL,
        0,
        A::myfunc,
        this,
        0,
        &threadid);
        if (!m_hThread) {
    return FALSE;
        }
    3、强制关闭线程
        void CloseTrainThread() {
    if(m_hThread==0)
    return;
            HANDLE hThread = (HANDLE)InterlockedExchangePointer(&m_hThread, 0);
            if (hThread) {
                WaitForSingleObject(hThread, INFINITE);
                CloseHandle(hThread);
            }
        };
      

  2.   

    C++程序
    _beginthreadex();
    线程函数:unsigned __stdcall ThreadProc(void*)
    MFC程序
    AfxBeginThread();
    线程函数:UINT __cdecl ThreadProc(LPVOID)
      

  3.   

    线程函数一定得是STATIC的吗?
      

  4.   

    定义在类里面可以吗?
    还有
    void CloseTrainThread() {
    if(m_hThread==0)
    return;
      HANDLE hThread = (HANDLE)InterlockedExchangePointer(&m_hThread, 0);
      if (hThread) {
      WaitForSingleObject(hThread, INFINITE);
      CloseHandle(hThread);
      }
      };定义在哪里啊?在A里面吗?
      

  5.   

    一楼里说:static DWORD WINAPI myfunc(LPVOID pv);
    实现:
     DWORD WINAPI A::myfunc(LPVOID pv)


    这个线程函数可以放在类A里面吗?
      

  6.   

    线程函数一定得是STATIC的吗?
    不是STATIC成员函数可以吗?
      

  7.   

    A类里面,这样容易访问m_hThread这个类成员变量。
      

  8.   

    线程函数一定得是STATIC的吗?
    不是STATIC成员函数,是普通的成员函数,可以吗?
      

  9.   

    6楼已有解答。
    线程函数中要访问类成员变量,可以通过传入的参数实现(CreateThread()函数中已经传入了this指针)。
    DWORD WINAPI A::myfunc(LPVOID pv)

    A* pA=(A*)pv;

      

  10.   

    你可以看看一些VC或者C++的基础视频教程,多线程肯定是都有讲到的。
    可以看看孙鑫的,这个流传挺广的
    或者看看 c语言也能干大事 里面的多线程开发(20节)一节,也有讲到,这个在youku里面好像就有
      

  11.   

    MFC程序
    AfxBeginThread();