zoukankan      html  css  js  c++  java
  • 线程

    一、创建线程的方法

    头文件中声明线程函数

    static void ThreadFunc(); 

    头文件添加protected型变量:

    HANDLE hThread; 
    DWORD ThreadID; 
    //分别代表线程的句柄和ID。 

    编写线程函数

    void CMultiThread1Dlg::ThreadFunc() 
    { 
    
    } 

    创建线程 
    对话框模式的,就是oninitialdialog里

    hThread=CreateThread(NULL, 
    0, 
    (LPTHREAD_START_ROUTINE)ThreadFunc, 
    NULL, 
    0, 
    &ThreadID);

    二、线程如何获取类成员变量;

    在CXXXDlg类中声明static UINT ThreadName( LPVOID lpParam );

    类外:

    UINT CXXXDlg::ThreadName( LPVOID lpParam )
    {
            CXXXDlg* p = (CXXXDlg*)lpParam;
            这样就能用了。
    }

    调用传入this 

    ThreadName(this);

    三、常见错误

    用VC创建新线程易出的问题error C2664: 'CreateThread' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned long (__stdcall *)(void *)'

    解决方案:

    (1)如果线程要执行的是类的成员函数,则必须用static声明为静态函数   
    如:   

    class   echo   
    {   
    static   DWORD   WINAPI   ThreadFunc(LPVOID     pvoid)   
    ......   
    ......   
    }   
  • 相关阅读:
    px和rem换算
    使用Android Studio创建Android项目
    Hopscotch
    AtCoder Grand Contest 010 --C:Cleaning
    Hello world!
    概率生成函数
    FFT 学习笔记
    扩展中国剩余定理(excrt)
    组合恒等式
    常见数列
  • 原文地址:https://www.cnblogs.com/tinaluo/p/7368336.html
Copyright © 2011-2022 走看看