AfxBeginThread创建线程的用法



       今天没什么事,研究一下多线程函数,好记性不如烂笔头,用菜鸟的语言先记录下来,这个是工作线程,对我们工作来说,这个就足够了。 

CWinThread* AfxBeginThread(
  AFX_THREADPROC pfnThreadProc, 
  LPVOID pParam,
  int nPriority =THREAD_PRIORITY_NORMAL,
  UINT nStackSize = 0,
  DWORD dwCreateFlags = 0,
  LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL
  )

       1、看一下该函数的第一个参数AFX_THREADPROC pfnThreadProc为线程调用函数名称。AFX说明是个全局函数,为了方便以后定义的时候,直接定义为static UINT jisuan(LPVOID lpParam)静态函数就行。

      2、第二个参数LPVOID pParam,是一个void类型的参数。在创建一个线程的时候,你可以传进去一个量,然后在UINT CThreadDlg::jisuan(LPVOID lpParam)函数中取出来。最常用的用法就是,当你想用到窗口类的时候,可以将窗口类的句柄传过去。方法如下:先获取窗口句柄CWnd *pParam=AfxGetMainWnd(),然后AfxBeginThread作为第二个参数传过去。在线程函数中强制类型转换CThreadDlg *pThreadDlg=(CThreadDlg *)lpParam就能操作窗口类的变量、控件等等了。

     3、nPriority工作线程优先级,同级为THREAD_PRIORITY_NORMAL;

    4、nStackSize:  以字节为单位指定新线程的堆栈大小。如果为0,则与创建它的线程的堆栈大小相同。

    5、dwCreateFlags:指定一个额外的标志控制线程的产生。它可以包括下面两个值中的个:CREATE_SUSPENDED:以挂起模式开始线程,并且指定挂起次数.当调用ResumeThread时,这个线程才会被执行。0 :创建之后,马上执行线程。

    6、lpSecurityAttrs 默认为null就行。

   7、创建线程后,如果成功则会返回CWinThread* pThread的变量。这个变量可用于对线程的控制,如暂停pThread->SuspendThread()和继续pThread->ResumeThread();


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值