VC2015创建多线程

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
__declspec ( thread int  nCount = 0; //线程局部变量
DWORD  WINAPI threadProc( LPVOID  * wparm)
{
      int  i = 0;
      while  (1)
      {
          if  (i == 20)  break ;
          Sleep(30);
          nCount =i++;
          CString str;
          str.Format(_T( "%d\n" ), nCount);
          TRACE(str); 
      }
      return  0;
}
void  CtestThreadDlg::OnBnClickedButton14()
{
       HANDLE   handle = ::CreateThread(NULL, 0, 
       (LPTHREAD_START_ROUTINE)threadProc, this , 0,NULL); //函数类型转换
}

将类的成员函数,作为线程的回调函数.代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class  test
{
     UINT    m_nCount;
     public :
        UINT  WINAPI threadProc( LPVOID  * wparm);
}
 
UINT  __stdcall test::threadProc( LPVOID  * wparm)
{
      int  i = 0;
      while  (1)
      {
          if  (i == 20)  break ;
          Sleep(30);
          m_nCount =i++;
          CString str;
          str.Format(_T( "%d\n" ), m_nCount);
          TRACE(str); 
      }
      return  0;
}
void  test::OnBnClickedStart()
{
     typedef   UINT    (__stdcall  *stdProc)( LPVOID );
     typedef   UINT    (__stdcall  test::* ProcObject)( LPVOID );
 
     ProcObject  theProc = (ProcObject)&test::threadProc;
 
         HANDLE   handle = CreateThread(NULL, 0, 
             (LPTHREAD_START_ROUTINE)*(stdProc*)&theProc, this , 0,NULL);
}













本文转自Chinayu201451CTO博客,原文链接:http://blog.51cto.com/9233403/2048717  ,如需转载请自行联系原作者




相关文章
VC6和VS2005(VC8)各项目默认运行时库
VC6和VS2005(VC8)各项目默认运行时库
|
计算机视觉
Qt实用技巧:win将ffmpeg、opengl、osg等各种库封装成qt模块,运行需要dll,增加自动拷贝运行库到exe目录执行脚本
Qt实用技巧:win将ffmpeg、opengl、osg等各种库封装成qt模块,运行需要dll,增加自动拷贝运行库到exe目录执行脚本
|
程序员 API 数据库