解决方案 »

  1.   

    -》这个函数头中WINAPI是什么意思?
    这个是函数的调用约定,在Win32下WINAPI = PASCAL = CALLBACK = __stdcall
    -》还有这个函数该放在什么地方?
    这个函数放在调用CreateThread()的函数体的上面就可以了,所以也可以放在.h文件当中,当然最开头也可以。不过它是一个全局函数,如果是类中的成员,请设置它为静态
    -》所有这样的函数都应该作为全局函数?
    是的。CreateThread()传递的参数是一个全局函数或是静态类成员函数。
      

  2.   

    用作线程的函数有以下要求
    1、全局或者静态函数,类的普通成员函数不能用作线程
    2、要有DWORD WINAPI listenthread(LPVOID lpparam)这样的定义形式
      

  3.   

    非常感谢!!
    ::CreateThread(NULL,0,listenthread,(LPVOID)m_hSocket,0,&dwthread);实现DWORD WINAPI listenthread(LPVOID lpparam){}
    CreateThread的第三个参数是不是就是传递给listenthread的参数呢?
    另能不能推荐一本好的线程编程的书?
      

  4.   

    第三个参数就是传递给listenthread的参数
    但在listenthread中要对参数进行转化
    如此例
    CSocket *pSocket;
    pSocket=(CSocket*)lpparam;
    只有全局函数或类内的静态函数才能作线程函数,想学多线程编程
    看windows核心编程足矣
      

  5.   

    还有一个问题CreateThread()的最后一个参数是什么意思呢?