windowsapi函数:Windows API一日一练(42)CreateThread函数

  随着时代发展计算机技术发展得很快CPU已经从单核心到多核心转变也就是个CPU里具备了同时做多件事情能力而不是过去分时复用了而是实实在在地做多件事情因此开发软件Software也进入了个新时代就是多线程软件Software开发时代如何合理地分配多个线程同时运行是提高软件Software效率关键原因了比如像网络游戏客户端里就可以使用个线程不断地更新游戏界面分配另外个线程不断地发送和接收网络数据这样CPU两个核心都在不断地工作如果还像以前那样使用个线程就会发现只有个内核在做事情当然使用线程编程模型也会大大地简化软件Software复杂性下面就来使用线程API

  CreateThread声明如下:

WINBASEAPI
__out
HANDLE
WINAPI
CreateThread(
    __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
    __in      SIZE_T dwStackSize,
    __in      LPTHREAD_START_ROUTINE lpStartAddress,
    __in_opt LPVOID lpParameter,
    __in     DWORD dwCreationFlags,
    __out_opt LPDWORD lpThreadId
    );


  lpThreadAttributes是线程属性

  dwStackSize是线程栈大小

  lpStartAddress是线程开始地址

  lpParameter是传送给线程参数

  dwCreationFlags是创建线程标志比如挂起线程

  lpThreadId是标识这个线程ID

  这个例子如下:

#001 //
#002 //线程运行
#003 //蔡军生 2007/09/21
#004 //
#005  DWORD WINAPI ThreadProc(
#006                               LPVOID lpParameter
#007                               )
#008 {
#009  //输出到调试窗口
#010  OutputDebugString(_T("ThreadProc线程运行\r\n"));
#011 
#012  //线程返回码
#013   0;
#014 }
#015 
#016 
#017 
#018 //
#019 // 响应命令.
#020 // 蔡军生 2007/09/21 QQ:9073204
#021 //
#022 LRESULT CCaiWinMsg::OnCommand( nID, nEvent)
#023 { 
#024  // 菜单选项命令响应:
#025  switch (nID)
#026  {
#027   IDC_CREATEBTN:
#028         //显示个按钮
#029          (!m_hBtn)
#030         {
#031                m_hBtn = CreateWindow(_T("BUTTON"),_T("按钮"),
#032                    WS_VISIBLE|WS_CHILD|BS_PUSHBUTTON,
#033                    50,50,100,32,
#034                     m_hWnd,(HMENU)IDC_BTN,m_hInstance,NULL);
#035         }                                           
#036         ;
#037   IDC_BTN: 
#038         {
#039               //传给线程简单参数
#040                nParam = 110;
#041 
#042               //保存线程ID
#043               DWORD dwThreadID = 0;
#044               
#045               //创建线程
#046               HANDLE hThread = CreateThread( 
#047                    NULL,                    //安全属性使用缺省
#048                    0,                         //线程堆栈大小
#049                    ThreadProc,                 //线程运行地址
#050                    &nParam,               //传给线程参数
#051                    0,                         //创建标志
#052                    &dwThreadID);       //成功创建后线程标识码
#053 
#054               //等待线程结束
#055               WaitForSingleObject(hThread,INFINITE);
#056 
#057               //删除线程资源
#058               CloseHandle(hThread);
#059 
#060               //
#061               OutputDebugString(_T("按钮按下\r\n"));
#062                               
#063         }         
#064         ;
#065  default:
#066          CCaiWin::OnCommand(nID,nEvent);
#067  }
#068 
#069   1;
#070 }


Tags:  api函数大全 api函数 windowsapi函数库 windowsapi函数

延伸阅读

最新评论

发表评论